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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章