有没有办法在 Java 中创建另一个对象集合(类似 LINQ)



完全新手的问题:如何在 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后,我得到两个AlterEgoAge s 48 和 16。有没有办法在Java中做这种事情?

Streams 是 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));

相关内容

最新更新