社区
Java SE
帖子详情
程序出错,报异常Comparison method violates its general contract!
qq_37620685
2017-02-24 06:07:44
好像是调用集合排序方法的时候出错了,就是Collections的sort方法。
...全文
409
3
打赏
收藏
程序出错,报异常Comparison method violates its general contract!
好像是调用集合排序方法的时候出错了,就是Collections的sort方法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
曾阿牛_
2017-02-27
打赏
举报
回复
2楼正解666
尼古拉斯-全蛋
2017-02-27
打赏
举报
回复
jiajing1990_
2017-02-24
打赏
举报
回复
你用的jdk是1.7的版本吧 这是因为JDK7底层的排序算法换了,JDK7中的Collections.Sort方法实现中要求,如果两个值是相等的,那么compare方法需要返回0,否则 可能 会在排序时抛错(这个异常并不是频繁出现的),而JDK6是没有这个限制的。所以在比较时,我们必须要考虑两个值相等的情况,而且返回的值需要为 0. 加上在调用Collections.sort(list,new PinyinComparator());方法进行排序,避免出现异常 再试试看
java中排序
报
:
Comparison
method
violates
its
general
con
trac
t
异常
的解决
主要给大家介绍了关于java中排序
报
:
Comparison
method
violates
its
general
con
trac
t
异常
的解决方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
“
Comparison
method
violates
its
general
con
trac
t!”问题原因及解决办法
开发中踩到的坑。通过arraylist.sort对元素进行排序,测试阶段没发现,上线后不久
报
了这个错误。“
Comparison
method
violates
its
general
con
trac
t!”。查了一些资料,下面总结一下。先贴下
出错
的代码: stus.sort((o1, o2) -> { if(o1 == null || o2 == null || o1 == o2) { return 0; }
Comparison
method
violates
its
general
con
trac
t!
RuntimeException: java.lang.IllegalArgumentException:
Comparison
method
violates
its
general
con
trac
t!
排序问题排查
Comparison
method
violates
its
general
con
trac
t!
通过List.sort对元素进行排序,测试阶段没发现,在st测试的时候
报
了这个错误。“
Comparison
method
violates
its
general
con
trac
t!”。 具体堆栈信息: 看起来没什么问题,但是却
报
了一个错,“比较方法违反其一般合同”。 在 JDK7 版本以上,Comparator 要满足自反性,传递性,对称性,不然 Arrays.sort,Collections.sort会
报
IllegalArgumentException
异常
。 自反性:当 两个相同的元素.
java
异常
:
Comparison
method
violates
its
general
con
trac
t!解决
项目在线上运行时突然出现了几百封
异常
邮件,过了一段时间又自动好了。 项目
异常
报
错信息是
Comparison
method
violates
its
general
con
trac
t 在顺着堆栈信息查找下去,发现是sort排序中重写compare方法引发的
异常
。 在网上查找资料和阅读了sort的源码之后得出结论: 在sort排序中重写的方法一定要满足可逆比较 Comparator<Inte...
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章