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); }
时间: 2024-11-05 19:48:43