【发布时间】:2012-12-28 15:46:31
【问题描述】:
我无法理解 Collections.sort 方法的方法实现和逻辑。这是我找到的方法实现,
public static <T extends Comparable<? super T>> void sort(List<T> list) {
Object[] a = list.toArray();
Arrays.sort(a);
ListIterator<T> i = list.listIterator();
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
}
首先这个方法的返回类型是void。方法签名中的<T extends Comparable<? super T>> 是什么?
这里使用 Array.sort 的目的是什么?
此外,一旦我们实现了可比较或比较器,我们编写的 compare 或 compareTo 方法逻辑在哪里需要考虑?
【问题讨论】:
-
Arrays.sort 使用修改后的快速排序算法对数组进行排序。将列表转换为数组并使用 Arrays 类中可用的 sort() 方法进行排序。然后将排序后的数组放回原始列表。所以不需要返回类型
-
@Renjith:
Arrays.sort(T[])不使用快速排序,不稳定;它使用了 Timsort,这是一个修改过的归并排序,真的。 -
@Louis wasserman docs.oracle.com/javase/6/docs/api/java/util/…
-
@Renjith:是的,它对 numerical 数组使用了修改后的快速排序,但对于 object arrays...
-
@LouisWasserman..非常感谢您提供的信息:-)
标签: java sorting collections