DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

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<Usuario> comparator = new Comparator<Usuario>() {
    public int compare(Usuario u1, Usuario u2) {
        return u1.getNome().compareTo(u2.getNome());
    }
};
Collections.sort(usuarios, comparator);

Enter fullscreen mode Exit fullscreen mode

Após refatoração com lambda:

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

Enter fullscreen mode Exit fullscreen mode

Versão ainda mais enxuta:

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

Enter fullscreen mode Exit fullscreen mode

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));

Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)