目前,转换一个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