Heim  >  Artikel  >  Java  >  Welcher optionale Java-Ansatz eignet sich am besten zum Zuordnen von Objekten zu optionalen Objekten und zum Abrufen des ersten nicht leeren Ergebnisses über Stream::flatMap?

Welcher optionale Java-Ansatz eignet sich am besten zum Zuordnen von Objekten zu optionalen Objekten und zum Abrufen des ersten nicht leeren Ergebnisses über Stream::flatMap?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-24 03:03:28280Durchsuche

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

Optionale Java-Integration mit Stream::flatMap

Java-Entwickler suchen nach einer übersichtlichen Möglichkeit, eine Liste von Objekten optionalen Objekten zuzuordnen und diese abzurufen Das erste nicht leere Ergebnis mit der Stream-API von Java 8 kann auf eine Herausforderung stoßen.

Der intuitive Ansatz der Verwendung von Things.stream().flatMap(this::resolve).findFirst() ist nicht durchführbar, da Optional ein fehlt stream()-Methode. Dies hat zur Erforschung alternativer Lösungen geführt:

Java 16

Java 16 führte Stream.mapMulti ein und ermöglichte die folgende prägnante Lösung:

<code class="java">Optional<Other> result =
  things.stream()
        .map(this::resolve)
        .<Other>mapMulti(Optional::ifPresent)
        .findFirst();</code>

Java 9

Java 9 führte Optional.stream ein und ermöglichte diese einfachere Lösung:

<code class="java">Optional<Other> result =
  things.stream()
        .map(this::resolve)
        .flatMap(Optional::stream)
        .findFirst();</code>

Java 8

In Java 8 kann der folgende Ansatz mithilfe einer Hilfsmethode verwendet werden:

<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>

Das obige ist der detaillierte Inhalt vonWelcher optionale Java-Ansatz eignet sich am besten zum Zuordnen von Objekten zu optionalen Objekten und zum Abrufen des ersten nicht leeren Ergebnisses über Stream::flatMap?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn