Vorgang zum Verbinden mehrerer Streams @Java

Übrigens habe ich Java aktualisiert, also werde ich es mit REPL machen. Geben Sie einfach jshell in die Konsole ein (java9 oder höher?)

jshell>

Wie es geht!

Concat beim Verbinden von zwei Streams

jshell> var streamA = Stream.of(1,2,3);
streamA ==> java.util.stream.ReferencePipeline$Head@1f36e637

jshell> var streamB = Stream.of(4,5);
streamB ==> java.util.stream.ReferencePipeline$Head@578486a3

jshell> Stream.concat(streamA, streamB).forEach(System.out::println);
1
2
3
4
5

Wie Sie sehen können, hat concat nur zwei Argumente? https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#concat-java.util.stream.Stream-java.util.stream.Stream-

Drei oder mehr sind an der Reihe von flatMap

Erstens gab es aufgrund der Art des Stroms kein Problem mit dem Betrieb der Verbindung. Lass uns ehrlich gehen.

jshell> var streamA = Stream.of(1,2,3);
streamA ==> java.util.stream.ReferencePipeline$Head@536aaa8d

jshell> var streamB = Stream.of(4,5);
streamB ==> java.util.stream.ReferencePipeline$Head@e320068

jshell> var streamC = Stream.of(6,7,8,9);
streamC ==> java.util.stream.ReferencePipeline$Head@1f57539

jshell> Stream.of(streamA, streamB, streamC).flatMap(Function.identity()).forEach(System.out::println);
1
2
3
4
5
6
7
8
9

Ich weiß nicht, wie ich die Schale in der Mitte brechen soll ...

jshell> var streamA = Stream.of(1,2,3);
streamA ==> java.util.stream.ReferencePipeline$Head@27a8c74e

jshell> var streamB = Stream.of(4,5);
streamB ==> java.util.stream.ReferencePipeline$Head@2d8f65a4

jshell> var streamC = Stream.of(6,7,8,9);
streamC ==> java.util.stream.ReferencePipeline$Head@1b68ddbd

jshell> Stream.of(streamA, streamB, streamC).
   ...> flatMap(Function.identity()).
   ...> forEach(System.out::println);
1
2
3
4
5
6
7
8
9

Diese Methode war meine Grenze. Wenn Sie etwas herausfinden, werde ich es (vielleicht) hinzufügen. Ich meine, die Periode ist am Ende unangenehm. Nein, in natürlicher Sprache ist dies normales Fahren.

Nutzlos zu reduzieren! Ich hasse es nicht mehr!

Wie Sie sehen können, ist das Reduzieren optional und es ist zweimal mühsam. YO

jshell> var streamA = Stream.of(1,2,3);
streamA ==> java.util.stream.ReferencePipeline$Head@2781e022

jshell> var streamB = Stream.of(4,5);
streamB ==> java.util.stream.ReferencePipeline$Head@57e1b0c

jshell> var streamC = Stream.of(6,7,8,9);
streamC ==> java.util.stream.ReferencePipeline$Head@4232c52b

jshell> Stream.of(streamA, streamB, streamC).
   ...> reduce(Stream::concat)
$38 ==> Optional[java.util.stream.ReferencePipeline$Head@ea1a8d5]

Das ist alles für heute. Sagen Sie sich, dass es wichtig ist, nach und nach fortzufahren.

Nachtrag: Von Schwertkämpfer hervorgehoben

"Wenn Sie nicht möchten, dass Reduzieren optional ist, können Sie eine Reduktion mit drei Argumenten verwenden."

Stream.of(streamA, streamB, streamC).reduce(Stream.empty(), Stream::concat, Stream::concat);

Du hast recht. Nein, aber dann ist es in Ordnung, Argument 2 nicht mehr zu reduzieren, oder?

Stream.of(streamA, streamB, streamC).reduce(Stream.empty(), Stream::concat)

Die Geschichte von Reduce ist Beckenbauer.

Recommended Posts

Vorgang zum Verbinden mehrerer Streams @Java
[Java] Stellen Sie eine Verbindung zu MySQL her
Stellen Sie eine Verbindung von Java zu PostgreSQL her
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
So wechseln Sie zwischen mehreren Java-Versionen
[Java] Einführung in Java
Einführung in Java
Verwenden Sie jenv, um mehrere Java-Versionen zu aktivieren
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Zeichenfolgenoperation Versuchen Sie, das Java-Problem in TypeScript 9-3 zu ändern
[Java / PostgreSQL] Verbinden Sie die WEB-Anwendung mit der Datenbank
[Java] Wie man mehrere for-Schleifen einzeln macht
[Java] Dateisystembetrieb
[Java] [SQL Server] Stellen Sie mit JDBC für SQL Server eine Verbindung zum lokalen SQL Server 2017 her
8 Entspricht mehreren Argumenten
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Einführung in die Bitarithmetik
Mehrfacher Ersatz für Java-Zeichenfolgen
Kotlins Verbesserungen an Java
Von Java zu Ruby !!
Informationen zur Java8-Stream-Reduzierung
Einführung in den Java-Befehl
Stellen Sie mit aktiviertem SSL in JDBC eine Verbindung zu mehreren MySQL-Instanzen her
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
So senken Sie die Java-Version
Migration von Cobol nach JAVA
[Java] Verwendung von Map
Java fügt PDF eine Tabelle hinzu
So deinstallieren Sie Java 8 (Mac)
Java zum Spielen mit Function
Java - So erstellen Sie JTable
Grundlagen der Zeichenoperation (Java)
Verwendung von Java Optional
Neue Funktionen von Java7 bis Java8
So minimieren Sie Java-Images
Wie schreibe ich einen Java-Kommentar
Verwendung der Java-Klasse
[Java] Verwendung von removeAll ()
[Java] So zeigen Sie Wingdings an
[Java] Einführung in den Lambda-Ausdruck
Shell zum Beenden von Java-Prozessen
Verwendung von Java Map
So legen Sie Java-Konstanten fest
[Java] Gründe für die Verwendung von statischen
Verbinden Sie CentOS 7 mit L2TP VPN
Verwendung von Java-Variablen
[Java] Einführung in die Stream-API
Java8 startet jetzt ~ Optional ~
So konvertieren Sie Java Base
[Java] Konvertiert ArrayList in Array
Verbinde dich mit Eclipse mit Orakel!
[Android] Verbindung zu MySQL herstellen (unvollendet)
Java-Thread locker zu verstehen
[Java] So implementieren Sie Multithreading