Ordenando um Stream
1 Ordenação de uma List
Utiliza o método sort da List.
Exemplo de ordenação por nome:
usuarios.sort(Comparator.comparing(Usuario::getNome));
2 Ordenação em um Stream
O método sorted é usado para ordenar elementos em um Stream.
Exemplo de filtragem e ordenação por nome:
usuarios.stream()
.filter(u -> u.getPontos() > 100)
.sorted(Comparator.comparing(Usuario::getNome));
Diferença principal: sorted não modifica a lista original (List).
3 Convertendo o Stream para uma Lista
O resultado pode ser coletado em uma nova lista usando collect(Collectors.toList()):
List<Usuario> filtradosOrdenados = usuarios.stream()
.filter(u -> u.getPontos() > 100)
.sorted(Comparator.comparing(Usuario::getNome))
.collect(Collectors.toList());
4 Comparação com Java 7
Código mais extenso e menos legível no Java 7:
Uso de uma lista temporária.
Necessidade de um laço for para filtragem.
Uso de uma classe anônima para implementar Comparator
List<Usuario> usuariosFiltrados = new ArrayList<>();
for(Usuario usuario : usuarios) {
if(usuario.getPontos() > 100) {
usuariosFiltrados.add(usuario);
}
}
Collections.sort(usuariosFiltrados, new Comparator<Usuario>() {
public int compare(Usuario u1, Usuario u2) {
return u1.getNome().compareTo(u2.getNome());
}
});
Conclusão: Streams tornam o código mais enxuto e legível.
Top comments (0)