我需要使用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) 我的目标是打印出四个中的两个值 - 名称(字符串)和头发颜色(枚举) - 描述arraylist中的某个对象.问题在于按名称按字母顺序对打印列表进行排序.这一切都必须在一个lambda.
我只是打印出来而没有排序.我已经设置了覆盖但是因为我还在学习,我似乎无法让它工作.
public void printAllNamesColours() {
people.stream()
.forEach(n->System.out.println(n.getName() + " " + n.getColour()));
}
@Override
public int compareTo(Person person) {
int ret = name.compareToIgnoreCase(person.name);
if (ret == 0) {
ret = colour.compareTo(person.colour);
}
if (ret == 0) {
ret = age - person.age;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)