[英]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.