Fabryki komparatorów i płynne definiowanie porządku
Twórz czytelne, komponowalne reguły porządkowania za pomocą metod fabrycznych Comparator.
Porównanie kodu
✕ Anonymous comparator
people.sort(new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
int byName = a.name().compareTo(b.name());
return byName != 0 ? byName : Integer.compare(a.age(), b.age());
}
});
✓ Java 8+
people.sort(Comparator.comparing(Person::name)
.thenComparingInt(Person::age));
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Komponowalność
Reguły porządkowania można naturalnie łączyć w łańcuch.
Łatwiejszy przegląd
Klucze sortowania i ich priorytety są jawne.
Bezpieczniejsze porównania
Wyspecjalizowane metody pomocnicze eliminują podatne na błędy komparatory oparte na działaniach arytmetycznych.
Stare podejście
Anonimowy Comparator
Nowoczesne podejście
Fabryki Comparator
Od JDK
8
Poziom trudności
Początkujący
Wsparcie JDK
Fabryki komparatorów i płynne definiowanie porządku
Dostępne
Dostępne od JDK 8 (marzec 2014)
Jak to działa
Fabryki komparatorów wyrażają porządek deklaratywnie i łączą klucze główne oraz dodatkowe bez ręcznie pisanych rozgałęzień.
Powiązana dokumentacja
Dowód