java.lang.IllegalArgumentException: Comparison method violates its general contract!
2016-05-06 16:44
656 查看
异常信息
Comparison method violates its general contract
http://iamyida.iteye.com/blog/2255804
图解JDK7的Comparison method violates its general contract异常
http://blog.2baxb.me/archives/993
问题原因:
Android 手机中使用的JDK是1.7版本,而此版本中修改了Collections.sort 的排序算法导致此问题
解决方案:
1. 需要判断比对的对象是否为空(不判断也没发现有什么问题)
2. 不能返回正整数、负整数、0, 而应该返回1 , -1, 0
3. 必须保证返回值会return 这3种值
4. 必须保证满足对等3定律
java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:747) at java.util.TimSort.mergeAt(TimSort.java:483) at java.util.TimSort.mergeCollapse(TimSort.java:410) at java.util.TimSort.sort(TimSort.java:214) at java.util.TimSort.sort(TimSort.java:173) at java.util.Arrays.sort(Arrays.java:659) at java.util.Collections.sort(Collections.java:217)
Comparison method violates its general contract
http://iamyida.iteye.com/blog/2255804
图解JDK7的Comparison method violates its general contract异常
http://blog.2baxb.me/archives/993
问题原因:
Android 手机中使用的JDK是1.7版本,而此版本中修改了Collections.sort 的排序算法导致此问题
解决方案:
1. 需要判断比对的对象是否为空(不判断也没发现有什么问题)
2. 不能返回正整数、负整数、0, 而应该返回1 , -1, 0
3. 必须保证返回值会return 这3种值
4. 必须保证满足对等3定律
相关文章推荐
- 一些小技巧
- java中的泛型
- java 代码保留小数位方法
- JAVA中的枚举类
- Java序列化与反序列化
- Spring SpringMVC文件上传错误(二)
- java中Comparator比较器的使用
- Java 基础知识(一)之基础概念
- Java 反射机制
- java enum详解
- spring集成jms用法
- Java学习之输入+文本输出
- Spring面试,IoC和AOP的理解
- eclipse快捷键大全
- 蓝桥杯 分机号 第六届JavaB组决赛第一题
- java集合07--Stack源码解读
- java保留4位小数
- Hibernate Validation各注解的用法Demo
- struts2的配置学习
- Java中Annotation的介绍