实现比较功能,可以实现Comparator接口,实现其compare方法,通常直接通过减法来比较
new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
};
当数值都未正数,比较结果没问题,但是,如果当第一个值很大,而第二个值是负数时,这样通过减法来比较结果不正确,因为其相减后的值超过Integer类型表示的范围。
解决这个隐匿的bug,可以不使用减法,而直接比较其数值大小,或使用google guava包下的比较工具
ComparisonChain.start().compare(2147483647, -1).result();
Integer类的compare方法
public static int compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}