Android碰到 "Comparison method violates its general contract" 异常的解决方法
来源:互联网 发布:免费远程控制软件 编辑:程序博客网 时间:2024/06/05 15:04
1.概述:
最近在对信息进行排序时,做了一个简单地比较器,当时在运行时并没有报错,但是,后台数据刷新时,我这边就出了问题。在jdk1.6中,当我们比较的内容的值相同时,使用java自己的排序方法"Collections.sort()"是很正常的,可是到了jdk1.7,问题就会出现了,这种情就不再允许了,这是因为JDK7底层的排序算法换了,JDK7中的Collections.Sort方法实现中要求,如果两个值是相等的,那么compare方法需要返回0,否则 可能 会在排序时抛错(这个异常并不是频繁出现的),而JDK6是没有这个限制的。所以在比较时,我们必须要考虑两个值相等的情况,而且返回的值需要为 0.
2.解决方法
如下代码,代码中8~9行增加了一句判断两个对象的值是否相同的语句,注意第9行,要求返回0(因为是判断值是否相同,相同的话要求返回0,且必须是0),否则可能会报出异常.
public class PinyinComparator implements Comparator<DeptAddBookBean> {
1.public int compare(DeptAddBookBean o1,DeptAddBookBean o2) {
2. if (o1.getLetter().equals("@") || o2.getLetter().equals("#")) {
3. return -1;
4. } else if(o1.getLetter().equals("#") || o2.getLetter().equals("@")) {
5. return 1;
6. } else if(o1.getLetter().compareTo(o2.getLetter())>0) {
7. return 1;
8. }else if(o1.getLetter().compareTo(o2.getLetter())==0){
9. return 0;//此处需要返回0;
10. }else {
11. return -1;
12. }
13 . }
}
如上添加一句判断两个值相等的情况后,在调用Collections.sort(list,new PinyinComparator());方法进行排序,避免出现异常.
0 0
- Android碰到 "Comparison method violates its general contract" 异常的解决方法
- 图解JDK7的Comparison method violates its general contract异常
- 图解JDK7的Comparison method violates its general contract异常
- JDK7的Comparison method violates its general contract异常
- JDK7的Comparison method violates its general contract异常
- 图解JDK7的Comparison method violates its general contract异常
- 遇到问题----java----Comparison method violates its general contract异常
- Comparator异常:Comparison method violates its general contract!
- Comparison method violates its general contract 解决办法
- Comparison method violates its general contract
- Comparison method violates its general contract
- Comparison method violates its general contract!
- Comparison method violates its general contract!
- Comparison method violates its general contract
- Comparison method violates its general contract!
- Comparison method violates its general contract!
- Comparison method violates its general contract!
- Comparison method violates its general contract
- HDU5895 Mathematician QSC(构造矩阵+矩阵快速幂+幂次循环节)
- Spi Flash 调试细节总结
- Unity 2D入门基础教程
- Android 判断耳机是否插入
- REDM-开源的商业化DirectUI库
- Android碰到 "Comparison method violates its general contract" 异常的解决方法
- log4j----按时间和大小增加新日志文件/输出多个自定义日志文件
- SQL语句的解析过程
- Android View.post(Runnable )
- 文件描述符的复制2
- iOS的生产环境和开发环境
- Linux下 将Oracle 数据库数据导出为dump文件
- Android中常用布局
- setOnTouchEvent 设置返回值为true 和 false的区别