Heim >Java >javaLernprogramm >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?
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!