首页 > 代码库 > android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
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)
需求排序:数据列表中如果fileName的文件存在的话,放到列表的最上面
public class MyData{ private String fileName; public void setfileName(String fileName){ this.fileName=fileName; } public String getfileName(){ return this.fileName; } } private void MySort(List<MyData> MyDatas){ Collections.sort(MyDatas, new Comparator<MyData>() { @Override public int compare(MyData lhs, MyData rhs) { // lhs和rhs 都要用上,不然会出错,本人测试是这样的,具体不知为何 // TODO Auto-generated method stub if (lhs == null || rhs == null) return 0; String path="/mnt/file/"; // file one String name1= lhs.getfileName(); String filename1 = path + name1; File file1 = new File(filename1); // file two String name2= rhs.getfileName(); String filename2 = path + name2; File file2 = new File(filename2); if (file1.exists() == true && file2.exists() == true) { return 0; } else { if (file1.exists() == true) { return 1; } else { return -1; } } } }); Collections.reverse(MyDatas); }
android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。