2015-10-18 88 views
2

我有下面的類流扁平對象:如何合併對象被壓扁使用Stream.flatmap

class A { 
    Stream<B> bs; 
} 

,我想將其轉換爲下面的類流:

class AB { 
    A a; 
    B b; 
    AB(A a, B b) { 
     this.a = a; 
     this.b = b; 
    } 
} 

我可以看到flatMap會給我B的流:

astream.flatMap(a -> a.bs); 

,但我不能找出如何通過傳遞一個對象到地圖,如:

astream.flatMap(a -> a.bs).map(b -> new AB(a, b)); 

如果我試試這個,我得到一個錯誤:

error: cannot find symbol 

,我有點期待。

+2

後一個完整的小例子。 –

+0

實際上'流'保存在領域似乎真的是有問題的想法給我。 –

回答

2

你必須使用map映射B S中bsStreamAB S的:

List<AB> abs = astream.flatMap(a -> a.bs.map(b->new AB(a,b))) 
         .collect(Collectors.toList());