我想将Optional<T>
转换为Stream<T>
:
我想出了以下内容:
public static Stream<T> stream(Optional<T> optional) {
return optional.map(Stream::of).orElseGet(Stream::empty);
}
有更短的路吗?
答案 0 :(得分:1)
升级到Java 9,你有一个方法:https://docs.oracle.com/javase/9/docs/api/java/util/Optional.html#stream--
public Stream<T> stream()
如果存在值,则返回仅包含该值的顺序
Stream
,否则返回空Stream
。自:9
答案 1 :(得分:1)
Optional.of(10).map(Stream::of).orElseGet(Stream::empty);
在Java9中添加了缺少的stream
方法,所以代码就是这样编写的,
optional.stream()
答案 2 :(得分:0)
您的代码返回Stream<Stream<T>>
。尝试更改为
public static <T> Stream<T> stream(Optional<T> optional) {
return optional
.map(t -> Stream.of(t))
.orElseGet(Stream::empty);
}
答案 3 :(得分:0)
您发布的代码无法编译。你为什么要使用额外的Stream.of(...)
?这有效:
public static <T> Stream<T> stream(Optional<T> optional) {
return optional.map(Stream::of).orElseGet(Stream::empty);
}