在map函數中,Stream我們可以將一個對象轉換為另一個對象,因此我們可以Stream將包含 3 個 A 類型元素的對象轉換為另一個包含 3 個StreamB 類型元素的對象。如何根據條件將 3 個類型元素轉換A Stream為 6 個或更多類型元素B Stream?在代碼方面。我們可以做的Stream<B> converted = original.map( a -> new B(a) );但是我們怎么能像下面這樣呢?Steam<B> converted = original.map( a -> { if(a.split()){ return [ new B(a), new B(a) ]; }else return new B(a);});我無法找到并理解如何做到這一點。先謝過。
1 回答
幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
您使用flatMap為了將原始元素的每個元素映射Stream到Stream某種類型的元素。
Steam<B> converted = original.flatMap( a -> {
if(a.split()){
return Stream.of(new B(a), new B(a));
} else {
return Stream.of(new B(a));
}
});
或者
Steam<B> converted = original.flatMap(a -> a.split() ?
Stream.of(new B(a), new B(a)) :
Stream.of(new B(a)));
添加回答
舉報
0/150
提交
取消
