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!