在学习Java 8的流和Lambda表达式时,我尝试使用流来替换以下嵌套的for循环:
List<Long> deskIds = new ArrayList<>();
for(ProvidedService memberService : service.getAllNodesDepthFirst()){
for(Desk d : memberService.getDesks()){
deskIds.add(d.getId());
}
}
该循环遍历“ProvidedService”对象的列表,对于每个对象,会遍历“Desk”对象的一个列表属性,并将“Id”字段提取到列表中。
我使用流编写了以下代码:
List<Long> deskIds = new ArrayList<>();
service.getAllNodesDepthFirst().stream().forEach(srv -> {
deskIds.addAll(srv.getDesks().stream().map(Desk::getId).collect(Collectors.toList()));
});
这是正确/最佳的方法吗?还是有一种方法可以在不使用第二个嵌套流的情况下完成此操作?