覆盖的比较器和Collections.sort
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());
}
}));
我的意思是,它会一直正常工作吗?
回答
-Integer.MIN_VALUE
也是Integer.MIN_VALUE
。
如果你能保证compareTo
can't return Integer.MIN_VALUE
,它的工作原理是一样的(假设compareTo
方法实现正确)。
否则,使用该reverseOrder
方法或在表达式中交换a
and会更安全b
(这就是这样reverseOrder
做的)。