我试图拓宽我的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或集合技巧,流式传输等)来编写这段代码。任何想法还是这样的好事?
答案 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());