Heim > Java > javaLernprogramm > Hauptteil

Wie konvertiert man optional in Stream in Java 8?

DDD
Freigeben: 2024-10-24 01:10:02
Original
608 Leute haben es durchsucht

How to Convert Optional to Stream in Java 8?

Optional in Stream mit flatMap() von Java 8 konvertieren

Die Stream-API von Java bietet prägnante Codierungslösungen, aber es gibt bestimmte Szenarien, die eine Herausforderung darstellen können. Eine solche Situation beinhaltet die Konvertierung eines optionalen zu einem Stream mit flatMap().

Das Problem

Angesichts einer Liste von Dingen (List Things) und einer Methode (Optionalsolve(Thing thing)) besteht das Ziel darin Ordnen Sie die Dinge Optionals zu und rufen Sie das erste Other ab. Die herkömmliche Lösung wäre:

things.stream().flatMap(this::resolve).findFirst();
Nach dem Login kopieren

Allerdings erwartet flatMap() einen Stream als Rückgabewert, während Optional keine stream()-Methode bereitstellt.

Java 16-Lösung

Java 16 führt Stream.mapMulti() ein und lindert dieses Problem:

Optional<Other> result =
    things.stream()
          .map(this::resolve)
          .<Other>mapMulti(Optional::ifPresent)
          .findFirst();
Nach dem Login kopieren

Java 9-Lösung

Java 9 führt Optional.stream() ein und ermöglicht die direkte Konvertierung:

Optional<Other> result =
    things.stream()
          .map(this::resolve)
          .flatMap(Optional::stream)
          .findFirst();
Nach dem Login kopieren

Java 8-Lösung

Bedauerlicherweise fehlt in Java 8 eine einfache Methode zum Konvertieren von Optional in Stream. Es kann jedoch eine Hilfsfunktion genutzt werden:

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

Das obige ist der detaillierte Inhalt vonWie konvertiert man optional in Stream in Java 8?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!