社区
Java SE
帖子详情
程序出错,报异常Comparison method violates its general contract!
qq_37620685
2017-02-24 06:07:44
好像是调用集合排序方法的时候出错了,就是Collections的sort方法。
...全文
445
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());方法进行排序,避免出现异常 再试试看
“
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; }
深入解析Comparator的契约性:如何避免
Comparison
method
violates
its
general
con
trac
t错误
本文深入解析Java中Comparator接口的契约性,详细阐述自反性、反对称性和传递性三大核心法则,并针对常见的
Comparison
method
violates
its
general
con
trac
t错误,通过实战案例剖析整数溢出、状态映射、浮点数比较等典型陷阱,最后提供使用内置方法、处理null值、严格测试等最佳实践,帮助开发者编写健壮可靠的排序逻辑。
图解JDK7的
Comparison
method
violates
its
general
con
trac
t
异常
1.摘要 前一阵遇到了一个使用Collections.sort()时
报
异常
的问题,跟小伙伴@zhuidawugui 一起排查了一下,发现问题的原因是JDK7的排序实现改为了TimSort,之后我们又进一步研究了一下这个神奇的算法。 2.背景 先说一下为什么要研究这个
异常
,前几天线上服务器发现日志里有偶发的
异常
: java.lang.IllegalArgumentEx
Comparison
method
violates
its
general
con
trac
t!
异常
信息 java.lang.IllegalArgumentException:
Comparison
method
violates
its
general
con
trac
t! at java.util.TimSort.mergeLo(TimSort.java:747) at java.util.TimSort.mergeAt(TimSort.java:483) at java.util....
JDK7的
Comparison
method
violates
its
general
con
trac
t
异常
1.摘要 前一阵遇到了一个使用Collections.sort()时
报
异常
的问题,跟小伙伴@zhuidawugui 一起排查了一下,发现问题的原因是JDK7的排序实现改为了TimSort,之后我们又进一步研究了一下这个神奇的算法。 2.背景 先说一下为什么要研究这个
异常
,前几天线上服务器发现日志里有偶发的
异常
: 1 2 3 4 5 6 7...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章