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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM