为什么我需要一个临时变量,因为这里需要 personAgentComparator 并对其调用reverse()?
public class SubTypeComparatorIssue {
public void sortAgeFromOldToYoung(List<Person> persons) {
//persons.sort(Comparator.comparing(person -> person.age).reversed());
Comparator<Person> personAgeComparator = Comparator.comparing(person -> person.age);
persons.sort(personAgeComparator.reversed());
}
}
class Person {
int age;
}
如何使用比较器作为单行进行排序和反转?当在该注释行上柯里化
person.age
时,我在 reversed()
下的 lambda 表达式中遇到错误。如果没有添加reverse(),我什至不会收到该错误!因此,现在用临时的 personAgentComparator
分两行,并在调用 reversed()
的同时调用 sort()
。
基本上,我如何让 oneliner 来完成整个操作?
我希望对这一行进行更正,将其作为单行代码,以使
persons
列表按人的年龄反向排序。
persons.sort(Comparator.comparing(person -> person.age).reversed());
使用 lambda 的方法之一
persons.sort((p1, p2) -> Integer.compare(p2.age, p1.age));