首页 > 代码库 > 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! 问题