提问人:Thomas Mathew 提问时间:10/17/2023 更新时间:10/17/2023 访问量:35
子类型比较器单衬垫问题
Sub Type Comparator One Liner Issue
问:
为什么我需要一个临时变量,因为这里需要 personAgentComparator 并调用 reversed()?
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;
}
如何将比较器作为单行进行排序和反转?我在 lambda 表达式中遇到错误,当 curing 该注释行时。如果没有添加reversed(),我什至不会收到该错误!因此,现在用那 temporary 做了两行,并在调用 .person.age
reversed()
personAgentComparator
reversed()
sort()
基本上,我如何让单线机来完成整个操作?
我希望对这一行进行更正,将其作为单行代码,以使列表按人的年龄反向排序。persons
persons.sort(Comparator.comparing(person -> person.age).reversed());
答:
0赞
bhagwan
10/17/2023
#1
使用 lambda 的方法之一
persons.sort((p1, p2) -> Integer.compare(p2.age, p1.age));
评论
persons.sort(Comparator.<Person>comparing(person -> person.age).reversed());
persons.sort(Comparator.comparingInt(Person::getAge).reversed());
persons.sort(Comparator.comparing((Person person) -> person.age).reversed());
persons.sort(Collections.reverseOrder(Comparator.comparing(person -> person.age)));