Präzise werden mit Java 8's Optional und Stream::flatMap
Beim Arbeiten mit Java 8-Streams ist das Transformieren eines List
Java 16-Lösung
Java 16 führt Stream.mapMulti ein und ermöglicht so mehr prägnanter Ansatz:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .<Other>mapMulti(Optional::ifPresent) .findFirst();</code>
Java 9-Lösung
JDK 9 fügt Optional.stream hinzu und vereinfacht die Aufgabe:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(Optional::stream) .findFirst();</code>
Java 8-Lösung
In Java 8 kann der folgende Ansatz gewählt werden:
<code class="java">Optional<Other> result = things.stream() .map(this::resolve) .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty()) .findFirst();</code>
Verwenden einer Hilfsfunktion zum Konvertieren von Optional in Stream:
<code class="java">static <T> Stream<T> streamopt(Optional<T> opt) { if (opt.isPresent()) return Stream.of(opt.get()); else return Stream.empty(); } Optional<Other> result = things.stream() .flatMap(t -> streamopt(resolve(t))) .findFirst();</code>
Das obige ist der detaillierte Inhalt vonWie konvertiert man Objektlisten in Java-Streams effizient in optionale Objekte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!