2015-11-05 10 views
9

Supponiamo che abbia più raccolte che vorrei gestire come un singolo stream. Qual è il modo più semplice per farlo? Esiste una classe di utilità che può fare questo per me o devo rotolare qualcosa da solo?Qual è il modo più semplice per combinare più raccolte in uno stream in Java?

Nel caso in cui la mia domanda non è chiara, questo è essenzialmente quello che sto cercando di fare:

Collection<Region> usaRegions; 
Collection<Region> canadaRegions; 
Collection<Region> mexicoRegions; 
Stream<Region> northAmericanRegions = collect(usaRegions, canadaRegions, mexicoRegions); 

public Stream<T> collect(T...) { 
    /* What goes here? */ 
} 
+5

Yea sua 'java.util .stream.Stream.concat'. Vedi http://stackoverflow.com/questions/22740464/adding-two-java-8-streams-or-an-extra-element-to-a-stream –

+0

Neat - Non mi rendevo conto che esisteva 'concat' ! Grazie! –

risposta

13

In alternativa, è possibile utilizzare flatMap:

Stream<Region> = 
    Stream.of(usaRegions, canadaRegions, mexicoRegions) 
      .flatMap(Collection::stream);