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);
        }
  • 相关阅读:
    ES 设置管理
    ES 数据搜索(1)
    ES 集群管理及基本操作
    ES 安装
    ES 基本概念
    HBase 缓存
    【Linux】【8】切换JDK版本时报错,bash: ./java: cannot execute binary file
    【Linux】【7】常用命令-目录处理命令
    【Linux】【6】Java项目打成Jar包后部署至服务器上
    【Linux】【5】安装jdk1.8并配置环境变量,以及切换jdk
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/3992263.html
Copyright © 2011-2022 走看看