java集合排序规则的一些改写方法

1、适用与List的sort排序改写

    public static void main(String[] args){
           ArrayList<Integer> list=new ArrayList<>();
           list.add(2);
           list.add(3);
           list.add(1);
           list.add(5);
                 
           Collections.sort(list,calAll());     //定义新的改写规则calAll();
            for(Integer i : list)
                System.out.print(i+" ");
    }

    private static Comparator calAll() {
        return new Comparator<Integer>() {           //返回倒序规则
            public int compare(Integer o1, Integer o2) {        
                if(o1>o2)
                    return -1;
                else if(o1<o2)
                    return 1;
                else
                    return 0;
            }
            };
    }

2、适用于set容器的TreeSet排序规则改写

Set<String> sortset = new TreeSet<>(new Comparator<String>() {
                public int compare(String o1, String o2) {
                    Integer a = rank(o1);       //rank为自定义的某个规则
                    Integer b = rank(o2);
                    if(a!=b)
                        return a.compareTo(b);      
                    else if(o1.length()!=o2.length())    //长度短的排长的后面
                        return ((Integer)o1.length()).compareTo(((Integer)o2.length()));
                    else
                        return o1.compareTo(o2);     //按ASCII码排序
                }
            });

compareTo函数:a大于指定函数b返回1,小于则返回-1,等于返回0;且基元数据类型不能调用(比如int无法调用,Integer即可)。

 

posted @ 2020-02-16 15:15  J,IAT  阅读(221)  评论(0编辑  收藏  举报