„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie konvertiere ich einen Iterator in einen Stream, ohne Daten zu kopieren?

Wie konvertiere ich einen Iterator in einen Stream, ohne Daten zu kopieren?

Veröffentlicht am 15.11.2024
Durchsuche:942

How to Convert an Iterator to a Stream Without Copying Data?

Konvertieren eines Iterators in einen Stream ohne Kopieren

Bei der Arbeit mit Datenstrukturen besteht häufig die Notwendigkeit, Daten auf unterschiedliche Weise zu manipulieren und zu verarbeiten. Ein häufiges Szenario ist die Konvertierung eines Iterators, einer sequentiellen Sammlung von Elementen, in einen Stream, eine vielseitigere und leistungsfähigere Datenverarbeitungspipeline.

Um diese Konvertierung effektiv zu erreichen, ist es wichtig, die Erstellung von Kopien der Daten zu vermeiden . Dies ist sowohl ineffizient als auch unnötig, insbesondere beim Umgang mit großen Datenmengen.

Ein Ansatz besteht darin, die StreamSupport-Klasse zu verwenden. Es bietet Methoden zum Erstellen eines Streams aus einem Iterable oder Spliterator. In diesem Fall können wir mithilfe von Spliterators.spliteratorUnknownSize() einen Spliterator aus dem Iterator erstellen. Hier ist ein Beispiel:

Iterator sourceIterator = Arrays.asList("A", "B", "C").iterator();
Stream targetStream = StreamSupport.stream(
    Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED),
    false);

Eine weitere Option besteht darin, ein Iterable aus dem Iterator zu erstellen. Iterable ist eine funktionale Schnittstelle, und mit Lambdas können wir ganz einfach ein Iterable aus einem Iterator erstellen:

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

Dieser Ansatz ist wohl besser lesbar, da er das funktionale Schnittstellendesign nutzt. Indem Sie unnötiges Kopieren vermeiden, können Sie Ihre Daten effizient verarbeiten und gleichzeitig Leistung und Codeklarheit beibehalten.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3