为了账号安全,请及时绑定邮箱和手机立即绑定

Collections.sort报错,大神求分析、求答案

Collections.sort报错,大神求分析、求答案

千万里不及你 2018-07-24 11:14:22
 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 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

你的代码虽然满足了自反性,但是不满足偏序。jdk 1.7还要求偏序性。
比如a = 10 b = 8 c = 4,那么你的代码出现 comp(a,b) == comp(a, c),sort会假设b=c但是实际上是b>c



查看完整回答
反对 回复 2018-08-12
  • 1 回答
  • 0 关注
  • 1182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信