sla*_*dan 60 java optional java-8 java-stream
我想在一个带有Optional的前缀中添加一个流.既然Stream.concat只能连接Streams我有这个问题:
如何将Optional <T>转换为Stream <T>?
例:
Optional<String> optional = Optional.of("Hello");
Stream<String> texts = optional.stream(); // not working
Run Code Online (Sandbox Code Playgroud)
sla*_*dan 125
在Java 8中,您可以这样做:
Stream<String> texts = optional.map(Stream::of).orElseGet(Stream::empty);
Run Code Online (Sandbox Code Playgroud)
Tag*_*eev 67
在Java-9 stream()中添加了缺少的方法,因此该代码有效:
Stream<String> texts = optional.stream();
Run Code Online (Sandbox Code Playgroud)
见JDK-8050820.在这里下载Java-9 .
你可以做:
Stream<String> texts = optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
Run Code Online (Sandbox Code Playgroud)
如果您不在Java 9上,我可以推荐Guava的Streams.stream(optional)方法。一个简单的示例:
Streams.stream(Optional.of("Hello"))
Run Code Online (Sandbox Code Playgroud)
也可以静态导入Streams.stream,因此您可以编写
stream(Optional.of("Hello"))
Run Code Online (Sandbox Code Playgroud)