DrA*_*zek 5 java lambda arraylist java-8 java-stream
我需要使用lambda来生成一些新对象列表.这些新对象从现有对象继承了一些特征.由于很难描述它而不会涉及太多细节,我将使用父母及其子女的例子.
我想根据人员列表(一个人=一个孩子)生成一个孩子列表.孩子们应该只继承父母的一些特征(在这种情况下,让我们说它是肤色).
由于我有点被迫使用lambdas(但也想了解它是如何工作的),我已经尝试了以下解决方案,但我无法通过正确的映射解决问题(还没有看到类似的东西而且我正在做一个试错法.可能我也有一个制作精良的构造函数.
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));
}
}
Run Code Online (Sandbox Code Playgroud)
在map您拥有 a之后Stream<Kid>,您需要的是 a List<Kid>,因此您需要通过 收集到列表toList()。
return people.stream()
.map(e -> new Kid(e))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
或者如果您需要可变列表,请使用toCollection:
return people.stream()
.map(e -> new Kid(e))
.collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)
另一方面,您需要重新考虑您的设计。
Person给Kid构造函数,只需传递一个Colour(假设它是一个枚举),否则传递String来表示颜色。Person老实说,在模型中拥有属性Kid没有多大意义,就像说“孩子有一个人”......也许您正在寻找的是Kid继承来Person表明“孩子是一个人” ”ETC...
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |