覆盖的比较器和 Collections.sort

0 java collections compare

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

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

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

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

And*_*ner 6

-Integer.MIN_VALUE也是Integer.MIN_VALUE

如果你能保证compareTocan't return Integer.MIN_VALUE,它的工作原理是一样的(假设compareTo方法实现正确)。

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