Heim  >  Artikel  >  Java  >  Wie kann ich einen Iterator in einen Stream konvertieren, ohne unnötige Kopien zu erstellen?

Wie kann ich einen Iterator in einen Stream konvertieren, ohne unnötige Kopien zu erstellen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-06 13:11:02174Durchsuche

How can I convert an Iterator to a Stream without creating unnecessary copies?

Konvertieren eines Iterators in einen Stream ohne Kopieren

Das Konvertieren eines Iterators in einen Stream ist nützlich, um die leistungsstarken Funktionen von Streams zu nutzen, ohne unnötige Dinge zu erstellen Kopien der Originalsammlung. Aus Leistungsgründen ist es jedoch von entscheidender Bedeutung, eine Kopie zu vermeiden.

Ein effektiver Ansatz besteht darin, die Spliterator-Schnittstelle von Java zu nutzen. Wir können aus dem Iterator einen Spliterator erstellen, der eine Grundlage für unseren Stream bildet:

<code class="java">Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();
Stream<String> targetStream = StreamSupport.stream(
          Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED),
          false);</code>

Eine Alternative, die einige möglicherweise besser lesbar finden, besteht darin, mithilfe von Lambdas ein Iterable aus dem Iterator zu erstellen, da Iterable ein ist Funktionsschnittstelle:

<code class="java">Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();

Iterable<String> iterable = () -> sourceIterator;
Stream<String> targetStream = StreamSupport.stream(iterable.spliterator(), false);</code>

Diese Methode umgeht die Notwendigkeit einer Zwischenliste und gewährleistet eine effiziente Konvertierung des Iterators in einen Stream.

Das obige ist der detaillierte Inhalt vonWie kann ich einen Iterator in einen Stream konvertieren, ohne unnötige Kopien zu erstellen?. 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