![](/img/trans.png)
[英]Why can Collections.sort take no comparator but List.sort must take a comparator?
[英]Difference between Collections.sort(list) and list.sort(Comparator)
有什么理由让我更喜欢Collections.sort(list)
方法而不是简单地调用list.sort()
吗? Collections.sort
在内部只是调用了List
类的sort
方法。
令人惊讶的是,几乎每个人都告诉我使用Collections.sort
。 为什么?
您List.sort(comparator)
方法是在 Java 8 中引入的,而实用方法Collections.sort
从 Java 1.2 开始就已经存在了。
因此,您会在 Internet 上找到很多提到该实用程序方法的参考资料,但这只是因为它在 JDK 中存在的时间更长。
请注意, Collections.sort
实现更改是在 8u20 中进行的。
这只是对 API 的更改。 对于像 Java 这样被广泛采用的语言,通常会在一段时间内发生这种情况,旧方法更可取,以保持对遗留的支持。
在这段时间之后,旧的 API 将被弃用(或者可能不会,两者都可以无限期地保留)。 在这段时间内,可能会对新 API 进行改进,使其功能与原始实现略有不同,从而鼓励开发人员采用它。 新 API 的要求/结果可能略有不同,实现可能会发生巨大变化。
然后,最终,新 API 接管,不再需要和删除旧 API。 在像 Java 这样被广泛采用的语言中,这可能需要数年或数十年的时间。 开发人员可以制定删除 API 的计划,但社区被迫将其保留。
简单的答案是Collections.sort
委托给List.sort
。 由于一个调用委托给另一个有等效的。 但是,最好使用List.sort
来简单地避免额外的方法调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.