オプションでストリームの先頭に追加したい。 Stream.concat
はStreamsのみを連結できるため、この質問があります。
Optional <T>をStream <T>に変換するにはどうすればよいですか
例:
Optional<String> optional = Optional.of("Hello");
Stream<String> texts = optional.stream(); // not working
Java-9では、欠落しているstream()
メソッドが追加されるため、このコードは機能します。
Stream<String> texts = optional.stream();
JDK-805082 を参照してください。 Java-9をダウンロード こちら 。
Java 8では、これを行うことができます。
Stream<String> texts = optional.map(Stream::of).orElseGet(Stream::empty);
Javaを使用していない場合は、 Guava のStreams.stream(optional)
メソッドをお勧めできます。9.簡単な例:
Streams.stream(Optional.of("Hello"))
静的インポートStreams.stream
も可能ですので、
stream(Optional.of("Hello"))
できるよ:
Stream<String> texts = optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
古いバージョンのJava(あなたに目を向けて、Android)を使用していて、 aNNiMON Lightweight Stream API を使用している場合、次のように何かを行うことができます。次のいずれか:
final List<String> flintstones = new ArrayList<String>(){{
add("Fred");
add("Wilma");
add("Pebbles");
}};
final List<String> another = Optional.ofNullable(flintstones)
.map(Stream::of)
.orElseGet(Stream::empty)
.toList();
この例では、リストのコピーを作成します。
私の元同僚の1人からの素敵なライブラリはStreamifyです。事実上すべてからストリームを作成する多くのコレクター。
https://github.com/sourcy/streamify
Streamifyでオプションのストリームフォームを作成します。
Streamify.stream(optional)