Heim >Java >javaLernprogramm >Wie kann ich einen Iterable in einen Java 8-Stream konvertieren, ohne eine Liste zu verwenden?

Wie kann ich einen Iterable in einen Java 8-Stream konvertieren, ohne eine Liste zu verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-19 03:55:03497Durchsuche

How Can I Convert an Iterable to a Java 8 Stream Without Using a List?

Konvertieren von Iterable in Stream in Java 8 JDK

Problem:

Wie kann ich ein Iterable mit Java 8 manipulieren? API streamen, ohne sie in eine Liste zu konvertieren?

Lösung:

tl;dr: Verwenden Sie StreamSupport.stream(iterable.spliterator(), false), um einen Stream aus dem Iterable zu erstellen.

Detaillierte Erklärung:

Iterable stellt eine spliterator()-Methode bereit, die einen Spliterator zurückgibt, der zum Erstellen eines verwendet werden kann Stream mit StreamSupport.stream. Hier ist der Codeausschnitt:

StreamSupport.stream(iterable.spliterator(), false)
    .filter(...)
    .moreStreamOps(...);

Dieser Ansatz vermeidet unnötige Konvertierungen in eine Liste, was die Leistung und den Speicherverbrauch verbessern kann. StreamSupport.stream benötigt zwei Argumente:

  • iterable.spliterator(): Der vom Iterable erhaltene Spliterator.
  • false: Gibt an, dass das Iterable keine bekannte Größe hat.

Der resultierende Stream kann dann mithilfe von Stream-API-Operationen wie Filter, Karte usw. manipuliert werden.

Vorteile:

Die Verwendung von StreamSupport.stream bietet die folgenden Vorteile:

  • Komfort: Einfacher und weniger fehleranfällig als die manuelle Handhabung von Spliteratoren.
  • Effizienz: Erzielt einen besseren Spliterator und Stream-Leistung, insbesondere wenn das Iterable bereits eine Sammlung ist.
  • Speichereinsparungen: Vermeidet unnötige Konvertierung in eine Liste und reduziert den Speicheraufwand.

Das obige ist der detaillierte Inhalt vonWie kann ich einen Iterable in einen Java 8-Stream konvertieren, ohne eine Liste zu verwenden?. 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