web-dev-qa-db-ja.com

Optional <T>をStream <T>に変換する方法は?

オプションでストリームの先頭に追加したい。 Stream.concatはStreamsのみを連結できるため、この質問があります。

Optional <T>をStream <T>に変換するにはどうすればよいですか

例:

Optional<String> optional = Optional.of("Hello");
Stream<String> texts = optional.stream(); // not working
58
slartidan

Java-9では、欠落しているstream()メソッドが追加されるため、このコードは機能します。

Stream<String> texts = optional.stream();

JDK-805082 を参照してください。 Java-9をダウンロード こちら

66
Tagir Valeev

Java 8では、これを行うことができます。

Stream<String> texts = optional.map(Stream::of).orElseGet(Stream::empty);
121
slartidan

Javaを使用していない場合は、 GuavaStreams.stream(optional)メソッドをお勧めできます。9.簡単な例:

Streams.stream(Optional.of("Hello"))

静的インポートStreams.streamも可能ですので、

stream(Optional.of("Hello"))
6
Utku Özdemir

できるよ:

Stream<String> texts = optional.isPresent() ? Stream.of(optional.get()) : Stream.empty();
6

古いバージョンの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
JohnnyLambada

私の元同僚の1人からの素敵なライブラリはStreamifyです。事実上すべてからストリームを作成する多くのコレクター。

https://github.com/sourcy/streamify

Streamifyでオプションのストリームフォームを作成します。

Streamify.stream(optional)
0
Gábor Lipták