Java Optional Integration with Stream:: flatMap
Java 開発者は、オブジェクトのリストを Optional オブジェクトにマップし、 Java 8 の Stream API を使用した最初の空でない結果は、課題に遭遇する可能性があります。
things.stream(). flatMap(this::resolve).findFirst() を使用する直感的なアプローチは、Optional にstream() メソッド。これにより、代替ソリューションの検討が行われました:
Java 16
Java 16 では Stream.mapMulti が導入され、次の簡潔なソリューションが可能になりました:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();</code>
Java 9
Java 9 では、Optional.stream が導入され、次のより単純なソリューションが可能になりました。
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();</code>
Java 8
Java 8 では、ヘルパー メソッドを使用した次のアプローチを採用できます:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::ofNullable) .findFirst(); // Helper method that converts Optional<T> to Stream<T> private static <T> Stream<T> streamOptional(Optional<T> optional) { return optional.isPresent() ? Stream.of(optional.get()) : Stream.empty(); }</code>
以上がオブジェクトをオプション オブジェクトにマッピングし、Stream:: flatMap 経由で空でない最初の結果を取得するには、どの Java オプション アプローチが最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。