Heim > Java > javaLernprogramm > Wie konvertiert man Objektlisten in Java-Streams effizient in optionale Objekte?

Wie konvertiert man Objektlisten in Java-Streams effizient in optionale Objekte?

Barbara Streisand
Freigeben: 2024-10-23 16:16:02
Original
360 Leute haben es durchsucht

How to Efficiently Convert List of Objects to Optional in Java Streams?

Präzise werden mit Java 8's Optional und Stream::flatMap

Beim Arbeiten mit Java 8-Streams ist das Transformieren eines List zu Optional und das effiziente Extrahieren des ersten Other-Werts kann eine Herausforderung sein. Während flatMap normalerweise einen Return-Stream erfordert, wird die Sache durch das Fehlen von stream() für Optional komplizierter.

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage