2016-06-06 11 views
11

Jak mogę zebrać wiele wartości List na jednej liście przy użyciu java-streams?Jak zebrać wiele list do jednej listy za pomocą strumieni Java?

List<MyListService> services; 

services.stream().XXX.collect(Collectors.toList()); 


interface MyListService { 
    List<MyObject> getObjects(); 
} 

Jak mam pełną kontrolę nad interfejsem: czy powinienem zmienić metodę powrotu jest Array zamiast listy?

+0

To zależy od tego, co 'MyListService' jest i jak uzyskać listę [s] z wystąpień nim. – Eran

+0

Czym dokładnie jest "MyListService"? Czy możesz podzielić się swoimi publicznymi metodami? Jak powinien wyglądać wynik? – Mureinik

+0

Usługa może zawierać * dowolną * metodę, która zwraca listę obiektów – membersound

Odpowiedz

19

Można zbierać wykazów zawartych w MyListService przypadkach z flatMap:

List<MyObject> list = services.stream() 
           .flatMap(s -> s.getObjects().stream()) 
           .collect(Collectors.toList()); 
+0

Świetne, które działa, jeśli jest to preferowany sposób. – membersound

+6

@membersound Do tego służy 'flatMap'. – Eran

+0

Omg dzięki temu uratowałeś mnie od tworzenia dodatkowych list i przenoszenia ich wszystkich 1 na 1 za pomocą – jDub9