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.sort
sowieso de sort
methode van de klasse List
aan.
Het is gewoon verrassend dat bijna iedereen me zegt Collections.sort
te gebruiken. Waarom?
Antwoord 1, autoriteit 100%
De methode List.sort(comparator)
waarnaar u verwijst, is geïntroduceerd in Java 8, terwijl de hulpprogrammamethode Collections.sort
bestaat 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.sort
is 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.sort
delegeert naar List.sort
. Aangezien de ene oproep afgevaardigde naar de andere zijn er equivalenten. Het verdient echter de voorkeur om List.sort
te gebruiken om de extra methodeaanroep te vermijden.