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

hot*_*oup 2 java collections lambda 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());
}
Run Code Online (Sandbox Code Playgroud)

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

dav*_*xxx 7

  • 流式传输列表Fizzbuzz
  • 将此流映射到aStream<Long>
  • 最后收集到一个List<Long>.

它会给:

List<Long> fbIds = getFizzbuzzes().stream()
                                  .map(Fizzbuzz::getId)
                                  .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)


Eug*_*ene 5

 fizzbuzzes.stream()
           .map(Fizzbuzz::getId)
           .collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)