2017-01-03 43 views
0

我有以下聲明:Java流API - 如何降低循環來減少

Function<Stream<Supplier<Collection<? extends User>>>, Stream<User>> userStreamSupplier = 
    supStream -> { 
    ArrayList<User> list = new ArrayList<>(); 
    supStream.forEach(sup -> list.addAll(sup.get())); 
    return list.stream(); 
}; 

是否有可能一個循環在內部拉姆達轉換爲智能stream.reduce操作(或其他聚集)?我嘗試了各種方法,但是失敗了。

問候, JG。

回答

5

你可以使用flatMap代替:

supStream -> supStream.flatMap(supp -> supp.get().stream()); 

返回由與通過將提供映射函數到每個元件產生的映射數據流的內容替換該流中的每個元素的結果的流。