Collection.sort(list)和list.sort()之间的区别

时间:2016-01-20 21:23:58

标签: java list sorting

我是否有理由更喜欢2.1.2-perf :014 > user = [1,2,3,4,5] => [1, 2, 3, 4, 5] 2.1.2-perf :016 > user[1] == "solo" ? "#{user[2]} #{user[3]} (s)" : "#{user[4]} (g)" => "5 (g)" 方法而不是简单地调用Collection.sort(list)?内部list.sort()仅调用Collection.sort类的sort方法。

几乎每个人都告诉我使用List,这简直令人惊讶。为什么呢?

3 个答案:

答案 0 :(得分:29)

您引用的方法List.sort(comparator)是在Java 8中引入的,而实用方法Collections.sort自Java 1.2以来一直存在。

因此,您会在互联网上找到很多提及该实用方法的参考资料,但这只是因为它已经在JDK中使用了更长时间。

请注意Collections.sort was made in 8u20的实施更改。

答案 1 :(得分:5)

这只是对API的更改。对于像Java这样广泛采用的语言,通常会发生一段时间,较旧的方法更可取,以维持传统支持。

在这段时间之后,旧的API将被弃用(或者可能不会,两者都可以无限期地保留)。在这段时间内,可能会对新API进行改进,导致其功能与原始实现略有不同,从而鼓励开发人员采用它。新API的要求/结果可能略有不同,实施可能会发生巨大变化。

然后,最终,新的API接管,不再需要和删除旧的API。在与Java一样广泛采用的语言中,这可能需要数年甚至数十年。开发人员可以制定删除API的计划,但必须让社区将其保留下来。

答案 2 :(得分:1)

简单的答案是Collections.sort委托给List.sort。由于一个呼叫委托给另一呼叫,所以等效。但是,最好使用List.sort来避免不必要的方法调用。