我喜欢使用Java8 Comparator
根据三个属性对对象的List
进行排序。要求按此顺序排序-名称升序,年龄降序,城市升序。如果我在` `Age上使用reversed()
,它也会颠倒之前排序的条目。下面是我尝试过的:
Comparator.comparing((Person p) -> p.getName())
.thenComparingInt(p -> p.getAge())
.reversed()
.thenComparing(p -> p.getCity());
发布于 2018-07-28 04:58:09
使用Comparator.reverseOrder()
.thenComparing(Person::getAge, Comparator.reverseOrder())
如果你想避免自动装箱,你可以这样做
.thenComparing((p1, p2) -> Integer.compare(p2.getAge(), p1.getAge()))
或
.thenComparing(Comparator.comparingInt(Person::getAge).reversed())
发布于 2018-07-28 05:05:32
不需要使用Comparator::reverse
方法。由于您希望根据整数反转比较,因此只需对年龄-p.getAge()
求反,它将按降序排序:
Comparator.comparing((Person p) -> p.getName())
.thenComparingInt(p -> -p.getAge())
.thenComparing(p -> p.getCity());
https://stackoverflow.com/questions/51565422
复制相似问题