2016-09-29 80 views
1

嵌套表合併成一個簡單的列表我有一個List看起來如下:如何使用Java 8個流API

List<List<Class2>> list = new ArrayList<>(); 

List<Class2> l1 = new ArrayList<>(); 
l1.add(new Class2(new Class3())); 
l1.add(new Class2(new Class3())); 
l1.add(new Class2(new Class3())); 
list.add(l1); 

List<Class2> l2 = new ArrayList<>(); 
l2.add(new Class2(new Class3())); 
l2.add(new Class2(new Class3())); 
l2.add(new Class2(new Class3())); 
list.add(l2); 

我怎麼能轉換Listlist到使用Java 8個流API一個List<Class3>

+0

哪裏是你的企圖? – Flown

+0

沒有任何嘗試,除了我在列表中迭代的蠻力方法,並且自己提取了'Class3'對象 – sfandler

回答

2

既然你傳遞給Class2構造Class3一個實例,我假設Class2有一個Class3成員與吸氣劑(讓我們稱之爲吸氣getClass3())。

基於這個假設,你可以做以下獲得包含在list所有所有所有列表的Class2成員Class3成員的List<Class3>

List<Class3> listOf3 = 
    list.stream() 
     .flatMap(List::stream) // convert a Stream<List<Class2>> to Stream<Class2> 
     .map(Class2::getClass3) // convert a Stream<Class2> to Stream<Class3> 
     .collect(Collectors.toList()); // collect to a List<Class3> 
+0

哦,是的,沒錯,我在問題中編輯了這個方法。感謝您的快速回答,這就是我一直在尋找的。 – sfandler