Factory di Comparator e ordinamento fluente
Crea regole di ordinamento leggibili e componibili con i metodi factory di Comparator.
Confronto Codice
✕ 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));
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Componibile
Le regole di ordinamento si concatenano in modo naturale.
Più facile da revisionare
Le chiavi di ordinamento e la loro priorità sono esplicite.
Confronti più sicuri
Gli helper specializzati evitano comparatori aritmetici soggetti a errori.
Approccio Vecchio
Comparator anonimo
Approccio Moderno
Factory di Comparator
Dal JDK
8
Difficoltà
Principiante
Supporto JDK
Factory di Comparator e ordinamento fluente
Disponibile
Disponibile dal JDK 8 (marzo 2014)
Come funziona
Le factory di Comparator esprimono l'ordinamento in modo dichiarativo e compongono chiavi primarie e secondarie senza scrivere manualmente diramazioni.
Documentazione Correlata
Prova