gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:50:11 25 4
gpt4 key购买 nike

完全新手问题:如何在 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分别为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没有适当的匿名对象,但是您可以创建 anonymous classes 的实例并访问它们的属性,只要您可以避免命名类型即可。 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));

关于java - 有没有办法在 Java 中创建另一个对象的集合(类似 LINQ)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com