目前,轉換一個List<List<Foo>>
到Stream<Foo>
,你必須使用以下方法:爲什麼沒有Stream.flatMap(Collection)方法?
Stream<Foo> stream = list.stream().flatMap(fs -> fs.stream());
//or
Stream<Foo> stream = list.stream().flatMap(Collection::stream);
我認爲這正是該方法引用分別設計的,它也提高可讀性不少。現在考慮一下:
Stream<Bar> stream = list.stream().flatMap(fs -> fs.getBarList().stream());
有兩個鏈式方法調用,沒有方法引用是可能的,我有這種情況發生在我身上幾次。雖然這不是一個大問題,但它似乎偏離了方法參考的簡潔性。
在使用了JavaFX 8之後,我注意到他們的API常量是便捷方法。 Java是一種非常冗長的語言,在我看來,簡單的方法重載是JavaFX的一大賣點。
所以我的問題是,我不知道爲什麼沒有方便的方法Stream.flatMap(Collection)
,可以這樣調用:
Stream<Bar> stream = list.stream().flatMap(Foo::getBarList);
這是甲骨文的人故意遺漏?或者這可能導致混淆?
注意:我知道「沒有意見的問題政策」,我不是在尋找意見,我只是想知道是否有這樣一種方法沒有實施的原因。
誰低估了這個需要留下解釋。 – CodeBlind