Mentre l'apprendimento di Java 8 corsi d'acqua e Lambas, ho cercato di sostituire il seguente cicli for innestati con i flussi:Qual è il modo corretto di sostituire un ciclo annidato con flussi in Java 8?
List<Long> deskIds = new ArrayList<>();
for(ProvidedService memberService : service.getAllNodesDepthFirst()){
for(Desk d : memberService.getDesks()){
deskIds.add(d.getId());
}
}
Le itera un elenco di oggetti 'ProvidedService', e per ciascuno di essi, itera su una proprietà lista di oggetti "Desk" ed estrae il campo "Id" in un elenco.
mi si avvicinò con il seguente codice utilizzando i flussi:
List<Long> deskIds = new ArrayList<>();
service.getAllNodesDepthFirst().stream().forEach(srv -> {
deskIds.addAll(srv.getDesks().stream().map(Desk::getId).collect(Collectors.toList()));
});
È il/modo ottimale corretto di farlo? O c'è un modo per farlo senza il secondo flusso annidato?
Credo che sia fine.There è alcun problema con il vostro approccio. –
Per ulteriori informazioni, visitare questo link: http://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html –
@Prakhar: sì, il mio approccio ha funzionato, ma era un po 'ingenuo e ho pensato che ci dovrebbe essere un modo per semplificarlo, come dimostrato dagli assylia. –