Fábricas de Comparator e ordenação fluente
Crie regras de ordenação legíveis e combináveis com métodos fábrica de Comparator.
Comparação de Código
✕ 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));
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Combinável
Regras de ordenação são encadeadas naturalmente.
Mais fácil de revisar
As chaves de ordenação e a prioridade ficam explícitas.
Comparações mais seguras
Métodos auxiliares especializados evitam comparadores aritméticos propensos a erros.
Abordagem Antiga
Comparator anônimo
Abordagem Moderna
Fábricas de Comparator
Desde o JDK
8
Dificuldade
Iniciante
Suporte JDK
Fábricas de Comparator e ordenação fluente
Disponível
Disponível desde o JDK 8 (março de 2014)
Como funciona
Fábricas de Comparator expressam a ordenação de forma declarativa e combinam chaves primárias e secundárias sem ramificações escritas manualmente.
Documentação Relacionada
Prova