FlatMap vs Filter,Map Java [重复]

Posted

技术标签:

【中文标题】FlatMap vs Filter,Map Java [重复]【英文标题】:FlatMap vs Filter, Map Java [duplicate] 【发布时间】:2019-10-10 03:45:27 【问题描述】:

对于 Java 流,是否有理由使用 .flatMap(...) 而不是 .filter(...).map(...) 的组合?

使用.flatMap(...) 的可读性通常不如.filter(...).map(...) 的组合,那么使用.flatMap(...) 有什么优势吗?

例如Optional:

.flatMap(optional -> optional.isPresent() ? Stream.of(optional.get()) : Stream.empty())

.filter(optional -> optional.isPresent())
.map(optional -> optional.get())

【问题讨论】:

【参考方案1】:

我和 Java 语言架构师都同意你的观点,Stream#flatMap 代表 Stream<Optional<T>> 在 Java 8 中不可读,这就是他们在 Java 9 中引入 Optional#stream 的原因。

使用它,您的代码变得更具可读性:

.flatMap(Optional::stream)

【讨论】:

以上是关于FlatMap vs Filter,Map Java [重复]的主要内容,如果未能解决你的问题,请参考以下文章

初涉RxAndroid .map() . filter() flatMap()

Swift中 Map,Flatmap,Filter,Reduce的用法

spark 教程三 spark Map filter flatMap union distinct intersection操作

spark 的一些常用函数 filter,map,flatMap,lookup ,reduce,groupByKey

java1.8 新特性(五 如何使用filter,limit ,skip ,distinct map flatmap ,collect 操作 java集合)

高效 告别996,开启java高效编程之门 3-7实战:常用中间操作演示之:过滤/映射/扁平化 filter/map/flagMap