6.3 Compondo comparators
1 Ordenando por Diferentes Critérios Podemos ordenar usuários pelos pontos, evitando autoboxing com comparingInt: usuarios.sort(Comparator.comparingInt(Usuario::getPontos)); 2 Compondo Comparadores com thenComparing Para ordenar por pontos e, em caso de empate, por nome: Comparator c = Comparator.comparingInt(Usuario::getPontos) .thenComparing(Usuario::getNome); usuarios.sort(c); Há métodos equivalentes como thenComparingInt para evitar boxing. 3 Lidando com Valores null Para mover valores null para o final da lista: usuarios.sort(Comparator.nullsLast(Comparator.comparing(Usuario::getNome))); O método nullsFirst faz o contrário, colocando null no início. 4 Ordenando em Ordem Decrescente Usamos reversed() no Comparator: usuarios.sort(Comparator.comparing(Usuario::getPontos).reversed()); 5 Explorando Novos Métodos A API de Comparator traz muitas melhorias, e é importante pesquisar e experimentar para evitar escrever código desnecessário.

1 Ordenando por Diferentes Critérios
- Podemos ordenar usuários pelos pontos, evitando autoboxing com comparingInt:
usuarios.sort(Comparator.comparingInt(Usuario::getPontos));
2 Compondo Comparadores com thenComparing
- Para ordenar por pontos e, em caso de empate, por nome:
Comparator
.thenComparing(Usuario::getNome);
usuarios.sort(c);
- Há métodos equivalentes como thenComparingInt para evitar boxing.
3 Lidando com Valores null
- Para mover valores null para o final da lista:
usuarios.sort(Comparator.nullsLast(Comparator.comparing(Usuario::getNome)));
- O método nullsFirst faz o contrário, colocando null no início.
4 Ordenando em Ordem Decrescente
- Usamos reversed() no Comparator:
usuarios.sort(Comparator.comparing(Usuario::getPontos).reversed());
5 Explorando Novos Métodos
- A API de Comparator traz muitas melhorias, e é importante pesquisar e experimentar para evitar escrever código desnecessário.