Problema na abordagem tradicional:
- Criar uma lista manualmente e adicionar elementos um a um.
- Causa efeitos colaterais alterando variáveis externas.
List<Integer> pontos = new ArrayList<>();usuarios.forEach(u -> pontos.add(u.getPontos()));List<Integer> pontos = new ArrayList<>(); usuarios.forEach(u -> pontos.add(u.getPontos()));List<Integer> pontos = new ArrayList<>(); usuarios.forEach(u -> pontos.add(u.getPontos()));
Enter fullscreen mode Exit fullscreen mode
Solução com map() no Stream:
- Transforma a lista sem necessidade de variáveis intermediárias.
List<Integer> pontos = usuarios.stream().map(u -> u.getPontos()).collect(Collectors.toList());List<Integer> pontos = usuarios.stream() .map(u -> u.getPontos()) .collect(Collectors.toList());List<Integer> pontos = usuarios.stream() .map(u -> u.getPontos()) .collect(Collectors.toList());
Enter fullscreen mode Exit fullscreen mode
Simplificação com method reference:
- Deixa o código mais limpo e legível.
List<Integer> pontos = usuarios.stream().map(Usuario::getPontos).collect(Collectors.toList());List<Integer> pontos = usuarios.stream() .map(Usuario::getPontos) .collect(Collectors.toList());List<Integer> pontos = usuarios.stream() .map(Usuario::getPontos) .collect(Collectors.toList());
Enter fullscreen mode Exit fullscreen mode
Explicação técnica:
- map() usa a interface funcional Function.
- O método apply() transforma um Usuario em um Integer.
原文链接:7.6 Liste apenas os pontos de todos os usuários com o map
© 版权声明
THE END
暂无评论内容