Collections.sort(lcd1, new Comparator<CouponDto>(){
@Override
public int compare(CouponDto o1, CouponDto o2) {
if(o1.getCoupon().getListOrder2() > o2.getCoupon().getListOrder2()){
return -1;
}
if(o1.getCoupon().getListOrder2() == o2.getCoupon().getListOrder2()){
return 0;
}
return 1;
};
});
报Comparison method violates its general contract异常
改成
Collections.sort(lcd1, new Comparator<CouponDto>(){
@Override
public int compare(CouponDto o1, CouponDto o2) {
return -(o1.getCoupon().getListOrder2() - o2.getCoupon().getListOrder2());
};
});
就不再报错;
各位大神,这个是怎么回事
1 回答
![?](http://img1.sycdn.imooc.com/5458622b000117dd02200220-100-100.jpg)
不负相思意
TA贡献1777条经验 获得超10个赞
你的代码虽然满足了自反性,但是不满足偏序。jdk 1.7还要求偏序性。 比如a = 10 b = 8 c = 4,那么你的代码出现 comp(a,b) == comp(a, c),sort会假设b=c但是实际上是b>c
添加回答
举报
0/150
提交
取消