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),时间复杂度不错,可以多使用 }