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

时间:2018-06-13 20:04:34

标签: java lambda collections java-8 java-stream

我试图拓宽我的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());
}

我想知道是否有一个更现代的&#34; Java 8+方式(lambdas或集合技巧,流式传输等)来编写这段代码。任何想法还是这样的好事?

4 个答案:

答案 0 :(得分:7)

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

它会给:

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

答案 1 :(得分:5)

 fizzbuzzes.stream()
           .map(Fizzbuzz::getId)
           .collect(Collectors.toList())

答案 2 :(得分:4)

确定你可以:

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

答案 3 :(得分:0)

使用Java 8流和方法引用,这样会更好:

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