gpt4 book ai didi

Java-根据现有对象列表从流中获取新对象列表

转载 作者:搜寻专家 更新时间:2023-10-31 19:42:56 25 4
gpt4 key购买 nike

我需要使用 lambda 来生成一些新对象列表。这些新对象继承了现有对象的一些特征。由于很难在不涉及太多微妙细节的情况下对其进行描述,因此我将使用 parent 及其子女的示例。

我想根据一组人(一个人 = 一个 child )生成一个 child 列表。 child 应该只继承 parent 的一些特征(在这种情况下,假设是肤色)。

因为我有点被迫使用 lambda(但也想了解它是如何工作的),我尝试了以下解决方案,但我无法通过正确的映射来解决这个问题(还没有看到类似的东西然而,我正在做一个试错法)。可能我的构造函数也很糟糕。

public class Kid {
private Colour colour;
private Person person;

public Kid(Person person) {
this.colour = person.getColour();
}

public List<Kid> listOfKids() {
return people.stream()
.map(e -> new Kid(e));
}
}

最佳答案

map 之后你有一个Stream<Kid>而你需要的是 List<Kid>因此,您需要通过 toList() 收集到列表中.

return people.stream()
.map(e -> new Kid(e))
.collect(Collectors.toList());

或者如果你需要一个可变列表,那么使用 toCollection :

return people.stream()
.map(e -> new Kid(e))
.collect(Collectors.toCollection(ArrayList::new));

另一方面,您需要重新考虑您的设计。

  1. 而不是传递一个整体 PersonKid构造函数只是传递一个 Colour (假设它是一个枚举)否则传递 String代表颜色。
  2. 拥有Person Kid 中的属性老实说,模型没有多大意义,就像说“一个 child 有一个人”...也许您正在寻找的是KidPerson 继承表示“一个 child 是一个人”

等...

关于Java-根据现有对象列表从流中获取新对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53900598/

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