前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >comparator 排序报错IllegalArgumentException

comparator 排序报错IllegalArgumentException

原创
作者头像
Antler
修改2019-01-07 10:39:36
1.1K0
修改2019-01-07 10:39:36
举报
文章被收录于专栏:StriveStrive

运行环境 | eclipse 12 | jdk1.8 | 数据量 100万

使用comparator 排序报错,十几条不出任何问题,正常排序,当超过100条数据时跑错java.lang.IllegalArgumentException

程序要对100万条json数据进行排序

java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(Unknown Source) at java.util.TimSort.mergeAt(Unknown Source) at java.util.TimSort.mergeCollapse(Unknown Source) at java.util.TimSort.sort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at java.util.ArrayList.sort(Unknown Source) at java.util.Collections.sort(Unknown Source) at movieDemo.Demo4.main(Demo4.java:46)

解决方法: 需要判断 结果 等于0的情况

加上等于零的情况,正常排序 if(o1.getValue() == o2.getValue()) { return 0; } 或者使用三目运算嵌套 return o1.getValue() - o2.getValue() == 0 ? 0 : o1.getValue() - o2.getValue() > 0 ?-1 : 1 ;

反例: return o1.getValue() - o2.getValue() > 0 ? -1 : 1;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运行环境 | eclipse 12 | jdk1.8 | 数据量 100万
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档