Java · Intermediário · Inglês · Técnico
Comparator
Interface que define uma ordem de comparação entre objetos, independente da classe deles. Permite ordenar listas por vários critérios sem mudar o tipo.
Onde usar
Aparece em sort e ordenações do dia a dia: Comparator.comparing(Pessoa::nome).thenComparing(...). Em review: 'não subtraia inteiros no compare'.
Em código
record Pessoa(String nome, int idade) {}
var lista = new ArrayList<Pessoa>();
lista.sort(
Comparator.comparing(Pessoa::nome)
.thenComparingInt(Pessoa::idade)
);Exemplos
Sort by name, then by age, using a Comparator.
Ordene por nome e depois por idade, usando um Comparator.
Don't subtract ints in compare, use Integer.compare.
Não subtraia ints no compare, use Integer.compare.
Cuidado
Subtrair dois ints dentro de compare pode estourar; use Integer.compare. E o Comparator é externo, diferente do Comparable, que fica na própria classe.