Java學習筆記-Collections.sort詳解


一、使用方法

你可以按照默認的自然序列來排序,當然也可以自定義排序方式自己實現Comparator接口,注意這是一個接口,你只需要自己實現里面的compare()即可。

eg:

Collections.sort(al, new Comparator<Interval>() {
  public int compare(Interval b1, Interval b2) {
    return b1.start - b2.start;
  }
});

二、由jdk的源碼來看看,Java如何泛化的來處理排序問題。

    public static <T> void sort(List<T> list, Comparator<? super T> c) {//<T>----泛化類型,不管是什么類型的列表都可以實現排序功能
    Object[] a = list.toArray();//轉化為數組再操作
    Arrays.sort(a, (Comparator)c);//調用數組的排序
    ListIterator i = list.listIterator();
    for (int j=0; j<a.length; j++) {
        i.next();
        i.set(a[j]);
    }
    }

好,來看看數組的排序:

    public static <T> void sort(T[] a, Comparator<? super T> c) {
    T[] aux = (T[])a.clone();
        if (c==null)//c可以為空,就成了自然順序;
            mergeSort(aux, a, 0, a.length, 0);
        else
            mergeSort(aux, a, 0, a.length, 0, c);//以特定的大小關系進行歸並排序。時間復雜度O(nlgn),時間復雜度不錯,可以多使用
    }

 


免責聲明!

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



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