-6

Collections.sort()每次 Arraylist我们进行排序时都需要,所以为什么不开发的“伟人”Arraylist 不添加Collections类作为扩展类!

4

3 回答 3

3

这是类中的 sort(list) 实现Collections

132     public static <T extends Comparable<? super T>> void sort(List<T> list) {
133         Object[] a = list.toArray();
134         Arrays.sort(a);
135         ListIterator<T> i = list.listIterator();
136         for (int j=0; j<a.length; j++) {
137             i.next();
138             i.set((T)a[j]);
139         }
140     }

您会看到它是通用的,并且可以在任何实现的所有实例上运行List.

List作为一个接口,您不能将此实现作为 的实例方法List,这样可以避免在每个具体实现中重复它。这就是为什么最好在第三方类中定义这些方法,Collections.

于 2013-04-18T09:04:43.183 回答
2
  1. Collections是一个实用类,ArrayList是一个数据结构。它们都出于不同的目的而存在。Collections.sort()是一种对 a 进行排序的实用方法List,将其保存在一个地方可以避免代码中的冗余。

  2. Collections.sort()是一个静态方法,所以它不能被覆盖。

  3. 如果任何List实现扩展Collections了 class ,那么将来它将无法扩展任何其他类。

于 2013-04-18T09:02:41.370 回答
1

那么可能是因为以下几个原因

  1. ArrayList 已经扩展了 AbstractList 并且您只能在 java 中扩展一个类
  2. Collections 的所有功能都是静态的
  3. 他们不希望任何人覆盖这些方法,以防万一不是静态的
  4. 如果有人认为它们可以转换为最终的非静态方法,那么将 Collections 作为基类将毫无用处。
  5. Collections 中的方法只是工作的一部分,可以在 ArrayList 上执行,它没有定义 ArrayList 应该做什么。因此,从 OOP 的角度来看,“伟人”都不会那样做。
于 2013-04-18T09:06:44.343 回答