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!