オブジェクトをオプション オブジェクトにマッピングし、Stream:: flatMap 経由で空でない最初の結果を取得するには、どの Java オプション アプローチが最適ですか?

Patricia Arquette
リリース: 2024-10-24 03:03:28
オリジナル
287 人が閲覧しました

Which Java Optionals Approach Is Best for Mapping Objects to Optional Objects and Retrieving First Non-Empty Result Via Stream::flatMap?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!