小编Rot*_*cky的帖子

是否可以使用 Comparator.comparingInt 链以相反的自然顺序按两个字段对对象进行排序

假设我想以相反的顺序ArrayList对字段height中的对象进行排序,如果两个值相同,我想以相反的顺序进一步对字段宽度进行排序。有没有办法使用类似的东西

 Comparator<Test> comparator = Comparator
            .comparingInt((Test t) -> t.height).reversed()
            .thenComparingInt((Test t ) -> t.width).reversed();
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用类似的东西:

Collections.sort(list, new Comparator<Test>() {

        public int compare(Test o1, Test o2) {

            Integer x1 =  o1.height;
            Integer x2 =  o2.height;
            int sComp = x2.compareTo(x1);

            if (sComp != 0) {
                return sComp;
            }

            x1 = o1.width;
            x2 = o2.width;
            return x2.compareTo(x1);
        }});
Run Code Online (Sandbox Code Playgroud)

但我真的很好奇是否有一行解决方案

所以关于这个小例子

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        Test one = …
Run Code Online (Sandbox Code Playgroud)

java reverse method-chaining comparator java-8

5
推荐指数
2
解决办法
680
查看次数

标签 统计

comparator ×1

java ×1

java-8 ×1

method-chaining ×1

reverse ×1