Vin*_*Pro 4 java list comparator java-8
我喜欢使用Java 8 基于三个属性对对象Comparator进行排序List.要求是按此顺序排序 - 名称升序,年龄降序,城市升序.如果我reversed()在'Age上使用它也会反转先前排序的条目.这是我尝试过的:
Comparator.comparing((Person p) -> p.getName())
.thenComparingInt(p -> p.getAge())
.reversed()
.thenComparing(p -> p.getCity());
Run Code Online (Sandbox Code Playgroud)
shm*_*sel 14
用途Comparator.reverseOrder():
.thenComparing(Person::getAge, Comparator.reverseOrder())
Run Code Online (Sandbox Code Playgroud)
如果你想避免自动装箱,你可以这样做
.thenComparing((p1, p2) -> Integer.compare(p2.getAge(), p1.getAge()))
Run Code Online (Sandbox Code Playgroud)
要么
.thenComparing(Comparator.comparingInt(Person::getAge).reversed())
Run Code Online (Sandbox Code Playgroud)
没有必要使用该方法Comparator::reverse.由于您希望基于整数反转比较,只需取消年龄-p.getAge(),它将按降序排序:
Comparator.comparing((Person p) -> p.getName())
.thenComparingInt(p -> -p.getAge())
.thenComparing(p -> p.getCity());
Run Code Online (Sandbox Code Playgroud)