子型比较器一衬管问题

问题描述 投票:0回答:1

为什么我需要一个临时变量,因为这里需要 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());
java list sorting reverse one-liner
1个回答
0
投票

使用 lambda 的方法之一

persons.sort((p1, p2) -> Integer.compare(p2.age, p1.age));

© www.soinside.com 2019 - 2024. All rights reserved.