【发布时间】:2022-07-07 19:13:26
【问题描述】:
如何获取实际流以便从 Optional 过滤或映射方法? 比如
Optional.ofNullable(id)
.map(this:loadAllById) // method loadAllById return a stream (now is wrapped in Optional<Stream>)
.filter(obj -> obj.status) // here i have no access to object in stream but to the full stream
由此也产生了疑问。在 Optional 中有一个流是否正确?由于流不应始终为空(如果为空),是否不需要检查?
提前感谢您的回答????
【问题讨论】:
-
是的,您正在混合使用两个 API:Optional 和 Stream。试试
.map(this:loadAllById).orElseGet(Stream::empty).filter(...):filter现在是 Stream 的,而不是 Optional 的。 -
普遍的共识似乎是像集合或流这样的容器元素最好表示为空元素,而不是包裹在
Optional中。 -
非常感谢你们,你已经澄清了我所有的疑惑
标签: java java-8 java-stream optional