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);
        }
  • 相关阅读:
    React组件的生命周期
    机器人api
    智能机器人
    已复制该虚拟机 之后需要的处理工作
    在虚拟机上安装CentOS6.5(minimal)
    fastdfs
    redis安装
    FtpClient上传文件异常:java.net.SocketException: Connection reset
    redis的学习笔记
    git命令2
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/3992263.html
Copyright © 2011-2022 走看看