使用 Java 8 的可选和 Stream::flatMap 变得简洁
使用 Java 8 流时,将 List
Java 16 解决方案
Java 16 引入了 Stream.mapMulti,支持更多简洁的方法:
Optional result = things.stream()
.map(this::resolve)
.mapMulti(Optional::ifPresent)
.findFirst();
Java 9解决方案
JDK 9添加了Optional.stream,简化了任务:
Optional result = things.stream()
.map(this::resolve)
.flatMap(Optional::stream)
.findFirst();
Java 8解决方案
在Java 8中,可以采取以下方法:
Optional result = things.stream()
.map(this::resolve)
.flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
.findFirst();
使用辅助函数将Optional转换为Stream:
static Stream streamopt(Optional opt) {
if (opt.isPresent())
return Stream.of(opt.get());
else
return Stream.empty();
}
Optional result = things.stream()
.flatMap(t -> streamopt(resolve(t)))
.findFirst();
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3