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();   //AAA
    for (int j=0; j<a.length; j++) {
        i.next();
        i.set((T)a[j]);
    }
}

上面的为Collections.sort的源码
我改写成了如下的形式
@SuppressWarnings("unchecked")
public static > List sort(List list) {
Object[] a = list.toArray();
Arrays.sort(a);
return (List) Arrays.asList(a);
}
总而言之
ListIterator i = list.listIterator(); //AAA
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
这部分有意思吗? 这不是把简单的问题变复杂了吗?

原方法节省了空间

而且通用于list的各种实现

你的返回类型为ArrayList

经过你改写后,返回的是一个新创建定长的java.util.Arrays.ArrayList,不能添加或删除元素
而原方法返回类型为void,在没有新创建List对象的前提下,对参数List中元素进行了排序,性能较高

你的代码返回排序后的列表,原始的代码对原来的list排序,两者没有可比性。