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);

    }

 

你可能感兴趣的:(exception)