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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值