Capítulo 5 - Ordenando no Java 8

5.1 Comparators como Lambda Se uma classe implementa Comparable, pode-se usar Collections.sort(). Caso contrário, é necessário um Comparator. Antes (sem lambdas): Comparator comparator = new Comparator() { public int compare(Usuario u1, Usuario u2) { return u1.getNome().compareTo(u2.getNome()); } }; Collections.sort(usuarios, comparator); Após refatoração com lambda: Comparator comparator = (u1, u2) -> u1.getNome().compareTo(u2.getNome()); Collections.sort(usuarios, comparator); Versão ainda mais enxuta: Collections.sort(usuarios, (u1, u2) -> u1.getNome().compareTo(u2.getNome())); 5.2 O método List.sort() O método List.sort() substitui Collections.sort(), tornando o código mais direto. Forma mais concisa usando method reference (Comparator.comparing()): usuarios.sort(Comparator.comparing(Usuario::getNome)); Benefícios da Abordagem com Lambda Código Conciso: Redução de boilerplate (não precisa de classes anônimas). Antes: 5 linhas para definir o Comparator. Depois: 1 linha com lambda. Legibilidade: Foco na lógica de comparação, sem estruturas redundantes. Flexibilidade: Permite ordenação customizada sem criar classes adicionais. Ver exemplo Completo de Ordenação da classe Usuário No Repo Benefícios: ✅ Código mais legível ✅ Evita criação de classes anônimas desnecessárias ✅ Usa recursos modernos do Java 8

Mar 8, 2025 - 19:31
 0
Capítulo 5 - Ordenando no Java 8

5.1 Comparators como Lambda
Se uma classe implementa Comparable, pode-se usar Collections.sort().
Caso contrário, é necessário um Comparator.

Antes (sem lambdas):

Comparator comparator = new Comparator() {
    public int compare(Usuario u1, Usuario u2) {
        return u1.getNome().compareTo(u2.getNome());
    }
};
Collections.sort(usuarios, comparator);

Após refatoração com lambda:

Comparator comparator = (u1, u2) -> u1.getNome().compareTo(u2.getNome());
Collections.sort(usuarios, comparator);

Versão ainda mais enxuta:

Collections.sort(usuarios, (u1, u2) -> u1.getNome().compareTo(u2.getNome()));

5.2 O método List.sort()
O método List.sort() substitui Collections.sort(), tornando o código mais direto.
Forma mais concisa usando method reference (Comparator.comparing()):

usuarios.sort(Comparator.comparing(Usuario::getNome));

Image description

Benefícios da Abordagem com Lambda

  • Código Conciso: Redução de boilerplate (não precisa de classes anônimas).
  • Antes: 5 linhas para definir o Comparator.
  • Depois: 1 linha com lambda.
  • Legibilidade: Foco na lógica de comparação, sem estruturas redundantes.
  • Flexibilidade: Permite ordenação customizada sem criar classes adicionais.

Ver exemplo Completo de Ordenação da classe Usuário
No Repo

Benefícios:
✅ Código mais legível
✅ Evita criação de classes anônimas desnecessárias
✅ Usa recursos modernos do Java 8