对于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())
答案 0 :(得分:4)
我与Java语言架构师一道,您同意Stream#flatMap
的{{1}}在Java 8中不可读,这就是为什么他们在Java 9中引入AppsAraby的原因。
使用此代码,您的代码更具可读性:
Stream<Optional<T>>