我的目标是打印出四个值中的两个值 - 名称(字符串)和头发颜色(枚举) - 描述数组列表中的某个对象。问题在于按名称字母顺序对打印列表进行排序。这一切都必须在一个 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;
}
最佳答案
您可以使用Stream.sorted
对其进行排序如:
people.stream()
.sorted() // considering your `compareTo` implementation
.forEach(n -> System.out.println(n.getName() + " " + n.getColour()));
关于java - 对 arraylist 对象的值进行排序并在一个 lambda 中打印多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53858970/