[英]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.