Java 错误解决之java.lang.IllegalArgumentException: Comparison method violates its general contract
来源:互联网 发布:在知乎工作 编辑:程序博客网 时间:2024/06/10 14:22
在jdk1.7上使用分类排序会报下面错误
java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:743) at java.util.TimSort.mergeAt(TimSort.java:479) at java.util.TimSort.mergeCollapse(TimSort.java:406) at java.util.TimSort.sort(TimSort.java:210) at java.util.TimSort.sort(TimSort.java:169) at java.util.Arrays.sort(Arrays.java:2038) at java.util.Collections.sort(Collections.java:1891)
测试了很多网上说的基本都不行,最后加了个判断排序两个相等返回0就可以了,
public int compare(FileInfo file1, FileInfo file2) { if (file1.getFirstLetter()==file2.getFirstLetter()){ return 0; }else { if (file1.getFirstLetter().equals("#")) { return 1; } else if (file2.getFirstLetter().equals("#")) { return -1; } else { //return comp(file1.getFirstLetter(), file2.getFirstLetter()); return file1.getFirstLetter().compareTo(file2.getFirstLetter()); } } }
具体原因的话是因为1.7的新算法抛的异常,这里有详细解释:http://www.cnblogs.com/JAYIT/p/6170426.html
this.minGallop = var11 < 1?1:var11; if(var2 == 1) { assert var4 > 0; System.arraycopy(var5, var8, var5, var9, var4); var5[var9 + var4] = var6[var7]; } else { if(var2 == 0) { throw new IllegalArgumentException("Comparison method violates its general contract!"); } assert var4 == 0; assert var2 > 1; System.arraycopy(var6, var7, var5, var9, var2); }
阅读全文
0 0
- Java 错误解决之java.lang.IllegalArgumentException: Comparison method violates its general contract
- Java 异常解决之java.lang.IllegalArgumentException: Comparison method violates its general contract!
- java.lang.IllegalArgumentException: Comparison method violates its general contract!
- java.lang.IllegalArgumentException: Comparison method violates its general contract!
- java.lang.IllegalArgumentException: Comparison method violates its general contract!
- java.lang.IllegalArgumentException: Comparison method violates its general contract!的解决方法
- java错误Comparison method violates its general contract!
- IllegalArgumentException: Comparison method violates its general contract错误详细内容
- 解决:Collections.sort java.lang.IllegalArgumentException: Comparison method violates its general conta
- Java Exception(Comparison method violates its general contract)
- 遇到问题----java----Comparison method violates its general contract异常
- 关于IllegalArgumentException: Comparison method violates its general contract!
- 关于JDK7的IllegalArgumentException: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!
- Linux 7z 指令
- Qt标准对话框之QMessageBox
- POI处理excel大数据
- C# 实现无标题栏窗口拖动效果
- struts文件上传和下载
- Java 错误解决之java.lang.IllegalArgumentException: Comparison method violates its general contract
- java修改项目web访问根目录
- Swig:C/C++代码转Python
- AngularJs中拟态框影响返回按钮返回问题
- Servlet 单例吗?action单例吗?
- poi实现Excel模板的报表导出
- Oracle11g中---SqlPlus可以正常登陆,sqlDeveloper无法登录
- 锁的种类与特点
- 支付功能集成包-简单设计