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);
Após refatoração com lambda:
Comparator<Usuario> 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
Top comments (0)