Verschil tussen Collections.sort(list) en list.sort(Comparator)

Is er een reden waarom ik de voorkeur zou geven aan de methode Collections.sort(list)boven het simpelweg aanroepen van de list.sort()? Intern roept Collections.sortsowieso de sortmethode van de klasse Listaan.

Het is gewoon verrassend dat bijna iedereen me zegt Collections.sortte gebruiken. Waarom?


Antwoord 1, autoriteit 100%

De methode List.sort(comparator)waarnaar u verwijst, is geïntroduceerd in Java 8, terwijl de hulpprogrammamethode Collections.sortbestaat al sinds Java 1.2.

Als zodanig zul je op internet veel referenties vinden over die hulpprogramma-methode, maar dat is gewoon omdat het al veel langer in de JDK staat.

Houd er rekening mee dat de wijziging in de implementatie voor Collections.sortis gemaakt in 8u20.


Antwoord 2, autoriteit 18%

Dit is gewoon een wijziging in de API’s. Met een taal met zo’n wijdverbreide acceptatie als Java, gebeurt er meestal gedurende een bepaalde periode, de oudere methode heeft de voorkeur, om legacy-ondersteuning te behouden.

Na deze periode wordt de oudere API verouderd (of misschien niet, beide kunnen voor onbepaalde tijd blijven bestaan). Binnen deze tijdsperiode kunnen er verbeteringen worden aangebracht aan de nieuwe API, waardoor de functionaliteit enigszins afwijkt van de oorspronkelijke implementatie, waardoor ontwikkelaars worden aangemoedigd om deze te gebruiken. De vereisten/resultaten van de nieuwe API kunnen enigszins afwijken en de implementatie kan drastisch veranderen.

Uiteindelijk neemt de nieuwe API het over en is de oudere API niet langer nodig en wordt deze verwijderd. In een taal die zo wijdverbreid is als Java, kan dit jaren of decennia duren. Ontwikkelaars kunnen een plan hebben om een ​​API te verwijderen, maar worden door de gemeenschap gedwongen om deze erin te laten.


Antwoord 3, autoriteit 9%

Het simpele antwoord is dat Collections.sortdelegeert naar List.sort. Aangezien de ene oproep afgevaardigde naar de andere zijn er equivalenten. Het verdient echter de voorkeur om List.sortte gebruiken om de extra methodeaanroep te vermijden.

Other episodes