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)