繁体   English   中英

有没有一种方法可以用Java(类似于LINQ)从另一个对象创建对象集合?

[英]Is there a way to create collection of objects from another in Java (LINQ-like)?

完全是新手的问题:在Java中,如何将属性从一个对象集合转换为另一个对象?

在C#中,我通常使用LINQ的出色语法来完成此类任务。 这是一个例子:

        List<Hero> Heroes = new List<Hero>()
        {
            new Hero() { Name = "Iron Man", Superpower = "Being Iron Man, duh", Age = 48 },
            new Hero() { Name = "Spider-Man", Superpower = "Spidey things", Age = 16 }

        };

        List<AlterEgo> AlterEgos = Heroes.Select(x => new AlterEgo { Age = x.Age }).ToList();

.Select ,我得到了两个带有Age 48和16的AlterEgo 。有没有办法在Java中做这种事情?

是Java与LINQ的并行。 这是您的Java代码在样式和语法上进行了修改后的样子:

List<Hero> heroes = Arrays.asList(
        new Hero("Iron Man", "Being Iron Man, duh", 48),
        new Hero("Spider-Man", "Spidey things", 16)
);

List<AlterEgo> alterEgos = heroes.stream()
        .map(x -> new AlterEgo(x.getAge()))
        .collect(Collectors.toList());

至于注释中的后续内容,Java没有适当的匿名对象,但是您可以创建匿名类的实例并访问其属性,只要可以避免命名该类型即可。 Java 10使用var关键字使此操作变得容易一些:

var list = heroes.stream()
        .map(x -> new Object() {
            int age = x.getAge();
            String name = x.getName(); 
        })
        .collect(Collectors.toList());

list.forEach(x -> System.out.println(x.age));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM