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

use*_*357 29 java sorting list

有什么理由我更喜欢Collection.sort(list)方法而不是简单地调用list.sort()?无论如何,内部Collection.sort只是调用类的sort方法List.

令人惊讶的是,几乎每个人都在告诉我使用它Collection.sort.为什么?

Tun*_*aki 32

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

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

请注意,实施的更改Collections.sort 是在8u20中进行的.


小智 10

简单的答案是Collections.sort委托给List.sort. 由于一个调用委托给另一个调用,因此存在等效的调用。但是,最好使用它List.sort来避免额外的方法调用。


Chr*_*sCM 5

这只是对API的更改。对于像Java这样广泛采用的语言,通常会发生一段时间,而较旧的方法最好保留旧版支持。

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

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

  • 众所周知,Sun热衷于保持向后兼容性。这就是使已有20年历史的代码可以在现代JVM上不变运行的原因。 (4认同)