一、使用方法
你可以按照默認的自然序列來排序,當然也可以自定義排序方式自己實現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),時間復雜度不錯,可以多使用 }