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());
};
});
就不再报错;
各位大神,这个是怎么回事
鄙视胡乱在网上抄一个答案的。
你的代码虽然满足了自反性,但是不满足偏序。jdk 1.7还要求偏序性。
比如a = 10 b = 8 c = 4,那么你的代码出现 comp(a,b) == comp(a, c),sort会假设b=c但是实际上是b>c
这个是因为jdk版本不同所用算法不同导致的,比如jdk6中应该是没问题的,而jdk7中就会报错,解决方法有两个,一是指定算法,二是比较的时候>,<,=,三种都加上
这个是因为jdk版本不同所用算法不同导致的,比如jdk6中应该是没问题的,而jdk7中就会报错,解决方法有两个,一是指定算法,二是比较的时候>,<,=,三种都加上
这个问答有bug啊,客户端提交回答的时候提示 提交失败,多点了几次就这这样了,手动尴尬