繁体   English   中英

使用Java lambda或流将POJO列表转换为其ID列表

[英]Using Java lambdas or streams to convert list of POJOs into a list of their IDs

我正在努力拓宽我的Java视野并开始实际编写Java 8+代码。 我有一个POJO列表的情况(每个POJO实例都有一个id : Long字段),我需要生成一个List<Long>表示它们的所有ids 这是我的代码完美无缺:

List<Fizzbuzz> fizzbuzzes = getFizzbuzzes();
List<Long> fbIds = new ArrayList<>();
for(Fizzbuzz fb : fizzbuzzes) {
    fbIds.add(fb.getId());
}

我想知道是否有更“现代”的Java 8+方式(lambdas或集合技巧,流媒体等)来编写这段代码。 任何想法还是这样的好事?

  • 流式 Fizzbuzz列表
  • 将此流映射Stream<Long>
  • 最后收集List<Long>

它会给:

List<Long> fbIds = getFizzbuzzes().stream()
                                  .map(Fizzbuzz::getId)
                                  .collect(Collectors.toList());
 fizzbuzzes.stream()
           .map(Fizzbuzz::getId)
           .collect(Collectors.toList())

你当然可以:

fizzbuzzes.stream() 
          .map(e -> e.getId()) 
          .collect(Collectors.toList());

这种方式会更好,使用Java 8流和方法参考:

List<Long> fbIds = fizzbuzzes.stream().map(Fizzbuzz::getid).collect(Collectors.toList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM