首先要跟接口Collection区别开来,Collection接口是我们最熟悉的一个接口,常见的List,Set都继承于Collection。
Collections是一个工具类,里面有一系列的静态方法,例如有:
- sort():对一个List中的元素进行排序
- shuffle():打乱一个List中元素顺序
- reverse():反转一个List中元素
Conllections不能new出来,因为构造方法被私有化了。
public class Collections {
// Suppresses default constructor, ensuring non-instantiability.
private Collections() {
}
Collections中的sort方法详情
具体在Arrays.class中是这样的:
public static <T> void sort(T[] a, Comparator<? super T> c) {
if (c == null) {
sort(a);
} else {
if (LegacyMergeSort.userRequested)
legacyMergeSort(a, c);//归并排序
else
TimSort.sort(a, 0, a.length, c, null, 0, 0);//归并排序的优化版本
}
}
/** To be removed in a future release. */
private static <T> void legacyMergeSort(T[] a, Comparator<? super T> c) {
T[] aux = a.clone();
if (c==null)
mergeSort(aux, a, 0, a.length, 0);
else
mergeSort(aux, a, 0, a.length, 0, c);
}
主要用到了归并排序算法mergesort。
网友评论