使用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 删除。