2015-11-05 9 views
9

Załóżmy, że mam wiele kolekcji, które chciałbym obsłużyć jako pojedynczy strumień. Jaki jest najłatwiejszy sposób na zrobienie tego? Czy istnieje klasa narzędziowa, która może to dla mnie zrobić, czy też muszę sam coś zrobić?Jaki jest najprostszy sposób łączenia wielu kolekcji w strumień w Javie?

W razie moje pytanie nie jest jasne, to jest w zasadzie to, co usiłuję zrobić:

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 jego 'java.util .stream.Stream.concat'. Zobacz http://stackoverflow.com/questions/22740464/adding-twoja-8-streams-or-an-extra-element-to-a-stream –

+0

Schludnie - nie zdawałem sobie sprawy, że 'concat' istniał ! Dzięki! –

Odpowiedz

13

Alternatywnie, można użyć flatMap:

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