• Java 中List集合中自定义排序


    /*
    集合框架的工具类。
    Collections:集合框架的工具类。里面定义的都是静态方法。
    
    Collections和Collection有什么区别?
    Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
    		它有两个常用的子接口,
    		List:对元素都有定义索引。有序的。可以重复元素。
    		Set:不可以重复元素。无序。
    
    Collections是集合框架中的一个工具类。该类中的方法都是静态的
    		提供的方法中有可以对list集合进行排序,二分查找等方法。
    		通常常用的集合都是线程不安全的。因为要提高效率。
    		如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
    */
    
    import java.util.*;
    
    class Test3 {
        public static void main(String[] args) {
            System.out.println("-------------sortDemo---------------");
            sortDemo();
            System.out.println("-------------maxDemo---------------");
            maxDemo();
            /**
             * -------------sortDemo---------------
             * [z, qq, zz, aaa, abcd, kkkkk]
             * -------------maxDemo---------------
             * [aaa, abcd, kkkkk, qq, z, zz]
             * max=zz
             */
        }
    
        public static void sortDemo() {
            List<String> list = new ArrayList<String>();
            list.add("abcd");
            list.add("aaa");
            list.add("zz");
            list.add("kkkkk");
            list.add("qq");
            list.add("z");
            Collections.sort(list, new StrLenComparator());
            sop(list);
        }
    
        public static void maxDemo() {
            List<String> list = new ArrayList<String>();
    
            list.add("abcd");
            list.add("aaa");
            list.add("zz");
            list.add("kkkkk");
            list.add("qq");
            list.add("z");
            Collections.sort(list);
            sop(list);
            String max = Collections.max(list);
            sop("max=" + max);
        }
    
        public static void sop(Object obj) {
            System.out.println(obj);
        }
    }
    
    
    /**
     * 比较器,先按字符长度然后按自然排序
     */
    class StrLenComparator implements Comparator<String> {
        public int compare(String s1, String s2) {
            if (s1.length() > s2.length())
                return 1;
            if (s1.length() < s2.length())
                return -1;
            return s1.compareTo(s2);
        }
    }
    

      

  • 相关阅读:
    day10函数嵌套
    day 9
    day 8函数
    day7预习
    合唱队形(解题思维的锻炼)
    Cow Exhibition (背包中的负数问题)
    Investment(完全背包)
    Cash Machine(多重背包二进制转换)
    Milking Time(DP)
    Brackets Sequence(升级版)
  • 原文地址:https://www.cnblogs.com/smartsmile/p/11616224.html
Copyright © 2020-2023  润新知