Heim > Java > javaLernprogramm > Hauptteil

Wie verarbeite ich dieselben Daten zweimal in Java-Streams, ohne sie in eine Sammlung zu konvertieren?

Susan Sarandon
Freigeben: 2024-11-07 00:36:03
Original
855 Leute haben es durchsucht

How to Process the Same Data Twice in Java Streams without Converting to a Collection?

Umgang mit dem Fehler „Stream wurde bereits ausgeführt oder geschlossen“

Stream-Vorgänge sind nicht wiederholbar, was bedeutet, dass ein Stream nur verwendet werden kann einmal. Dies wirft die Frage auf: Wie kann man dieselben Daten zweimal verarbeiten, ohne dass die Kosten für die Neugenerierung anfallen?

Gibt es eine Lösung, ohne den Stream in eine Sammlung umzuwandeln?

Das Sammeln eines Streams in einer Sammlung ermöglicht mehrere Iterationen, erhöht jedoch den Overhead. Ein besserer Ansatz ist die Verwendung der forEach-Methode, die eine Verbraucherfunktion als Argument verwendet. Innerhalb des Verbrauchers können für jedes Element mehrere Vorgänge ausgeführt werden.

<code class="java">stream().forEach(e -> {
    consumerA(e);
    consumerB(e);
    // ...
});</code>
Nach dem Login kopieren

Überlegungen und Einschränkungen zum Design

Die Java Streams API unterstützt aufgrund ihrer Funktion kein Stream-Forking Auswirkungen auf die Effizienz. Der effizienteste Anwendungsfall besteht darin, dass die Daten nur einmal verarbeitet werden, sodass kein Puffern oder Kopieren erforderlich ist. Wenn mehrere Iterationen erforderlich sind, wird empfohlen, die Daten in einer Sammlung zu speichern oder eine alternative Bibliothek wie RxJava zu verwenden.

Alternative Bibliotheksoption: RxJava

RxJava bietet eine größere Flexibilität Modell für die Stream-Verarbeitung. Es unterstützt mehrere Abonnements für ein Observable, was einem Stream ähnelt. Dadurch können dieselben Daten parallel oder sequentiell von verschiedenen Verbrauchern verarbeitet werden, eine Funktion, die in Java Streams nicht verfügbar ist.

Das obige ist der detaillierte Inhalt vonWie verarbeite ich dieselben Daten zweimal in Java-Streams, ohne sie in eine Sammlung zu konvertieren?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!