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

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