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.