Collections 中的sort() 方法如下:
public static <T extends Comparable<? super T>> void sort(List<T> list) {
list.sort(null);
}
其中调用的list.sort() 为:
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
其中调用的Arrays.sort() 为:
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);
}
}
public static void sort(Object[] a) {
if (LegacyMergeSort.userRequested)
legacyMergeSort(a);
else
ComparableTimSort.sort(a, 0, a.length, null, 0, 0);
}
Arrays.sort 和 Collections.sort 实现原理和区别
原文:https://www.cnblogs.com/firecode7/p/13275895.html