7.6 Liste apenas os pontos de todos os usuários com o map

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
喜欢就支持一下吧
点赞11 分享
The wise man is always a good listener.
智慧比财富更宝贵
评论 抢沙发

请登录后发表评论

    暂无评论内容