java中为何用collections.sort排序是操作原list,而是返回一个新list?

java中为何用collections.sort方法对list类型排序是操作原list,而是返回一个新list?它是如何做到的?

取决于实现,不同版本的JDK,实现也有不一样的,早期的会返回一个List,新版本都会在内部进行处理,主要是算法的优化
http://stackoverflow.com/questions/7980078/java-sorting-an-arraylist-in-place

先复制一个list,然后再在新的list上排序,返回就可以了。你何不看下java类库的源代码。

基本思路应该是会用一个临时的tempList接收排序后的结果,等排序完成后,把传入的原List clear,然后addAll(tempList); 所以看起来是,只操作了原list

list直接是排序不了的,他拿到list之后会转换为数组,然后运用快速排序算法(应该是这个算法,我记得java中用的排序算法号称是全世界最快的排序算法),对数组进行排序,排序好之后,再把数组转换为list返回就ok了.

问题很简单,要看它底层是怎么实现的,通过反编译进去看源代码啊;

对啊,直接看看collections.sort源码不就清楚了嘛