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.

Mar 11, 2025 - 01:42
 0
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.