Ucząc Java 8 strumieni i lambas, starałem się wymienić następujące zagnieżdżone pętle ze strumieniami:Jaki jest właściwy sposób zastępowania zagnieżdżonej pętli for strumieniami w języku Java 8?
List<Long> deskIds = new ArrayList<>();
for(ProvidedService memberService : service.getAllNodesDepthFirst()){
for(Desk d : memberService.getDesks()){
deskIds.add(d.getId());
}
}
The iteruje pętli listę obiektów „ProvidedService”, a dla każdego z nich, iteruje właściwości listy obiektów "Desk" i wypakowuje pole "Id" do listy.
wymyśliłem następujący kod za pomocą strumieni:
List<Long> deskIds = new ArrayList<>();
service.getAllNodesDepthFirst().stream().forEach(srv -> {
deskIds.addAll(srv.getDesks().stream().map(Desk::getId).collect(Collectors.toList()));
});
czy to właściwa/optymalny sposób to zrobić? Czy istnieje sposób, aby to zrobić bez drugiego zagnieżdżonego strumienia?
myślę, że jest fine.There ma problemu ze swoim podejściu. –
Aby uzyskać więcej informacji, należy kliknąć ten link: http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html –
@Prakhar: Tak, moje podejście zadziałało, ale było naiwne i pomyślałem, że powinien istnieć jakiś sposób na usprawnienie tego, jak wykazano w assyliach. –