zoukankan      html  css  js  c++  java
  • 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);
        }
  • 相关阅读:
    D. Renting Bikes 二分
    Maximum Absurdity DP + 数学
    模拟 H
    Secrets 数论
    A. Knight Tournament SET的应用
    B. Xenia and Hamming Codeforces 256B GCD,LCM处理字符串
    Alternate Task UVA11728 暴力枚举
    GCD Extreme (II) 欧拉函数的应用
    Bit Magic HDU 4421 2-Sat
    Encoding http://acm.hdu.edu.cn/showproblem.php?pid=1020
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/3992263.html
Copyright © 2011-2022 走看看