Heim > Java > javaLernprogramm > 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
Freigeben: 2024-11-06 13:11:02
Original
243 Leute haben es durchsucht

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

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

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!

Quelle:php.cn
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