覆盖的比较器和 Collections.sort

时间:2021-01-13 12:54:55

标签: java collections compare

        Collections.sort(list, new Comparator<A>() {
        @Override
        public int compare(A a, A b) {
            return -a.getId().compareTo(b.getId());
        }
    });

如果在比较器的返回值前面加一个减号,会不会对应reverseOrder方法?

        Collections.sort(list, Collections.reverseOrder(new Comparator<A>() {
        @Override
        public int compare(A a, A b) {
            return a.getId().compareTo(b.getId());
        }
    }));

我的意思是,它会一直正常工作吗?

1 个答案:

答案 0 :(得分:6)

-Integer.MIN_VALUE 也是 Integer.MIN_VALUE

如果你能保证 compareTo 不会返回 Integer.MIN_VALUE,它会同样工作(假设 compareTo 方法实现正确)。

否则,使用 reverseOrder 方法或在表达式中交换 ab(这就是 reverseOrder 所做的)会更安全。