Heim  >  Artikel  >  Java  >  Wie konvertiere ich einen Iterator in einen Stream, ohne eine Kopie zu erstellen?

Wie konvertiere ich einen Iterator in einen Stream, ohne eine Kopie zu erstellen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-07 01:05:02992Durchsuche

How to Convert an Iterator to a Stream Without Creating a Copy?

Iterator ohne Kopieren in Stream konvertieren

Das direkte Konvertieren eines Iterators in einen Stream ohne Erstellen einer Zwischenkopie ist aus Leistungsgründen ein wünschenswerter Vorgang. Hier sind zwei effektive Methoden, um diese Konvertierung zu erreichen:

Methode 1: Spliterator verwenden

Erstellen Sie mithilfe der Spliterators-Klasse einen Spliterator aus dem Iterator und verwenden Sie ihn als Grundlage für der Stream:

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

Methode 2: Verwenden von Iterable

Erstellen Sie ein Iterable aus dem Iterator mithilfe eines Lambda-Ausdrucks. Iterable ist eine funktionale Schnittstelle, die diese Konvertierung unkompliziert macht:

<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>

Der Schlüssel zur Vermeidung einer Kopie in beiden Methoden liegt darin, dass sie die StreamSupport-Klasse verwenden, die es Ihnen ermöglicht, einen Stream direkt aus einem Spliterator oder zu erstellen Iterierbar ohne Zwischenmanipulation der Sammlung.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen Iterator in einen Stream, ohne eine Kopie 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