Opération pour connecter plusieurs Streams @Java

Au fait, j'ai mis à jour Java, donc je vais le faire avec REPL. Tapez simplement jshell sur la console (java9 ou supérieur?)

jshell>

Comment faire!

Concat lors de la connexion de deux flux

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

Comme vous pouvez le voir, concat n'a que deux arguments? https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#concat-java.util.stream.Stream-java.util.stream.Stream-

Trois ou plus, c'est au tour de flatMap

En premier lieu, il n'y avait aucun problème avec le fonctionnement de la connexion en raison de la nature du flux. Allons-y honnêtement.

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

Je ne sais pas comment casser le jshell au milieu ...

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

Cette méthode était ma limite. Si vous découvrez quelque chose, je l'ajouterai (peut-être). Je veux dire, la période est désagréable à la fin. Non, en langage naturel, c'est une conduite normale.

Inutile de réduire! Je déteste plus!

Comme vous pouvez le voir, le réduire le rend facultatif et c'est un problème deux fois. 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]

C'est tout pour aujourd'hui. Dites-vous qu'il est important de continuer petit à petit.

Post-scriptum: signalé par Swordone

"Si vous ne voulez pas que la réduction soit facultative, vous pouvez utiliser une réduction à 3 arguments."

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

Tu as raison. Non, mais alors il n'y a plus de mal à réduire l'argument 2, non?

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

L'histoire de réduire est Beckenbauer.

Recommended Posts

Opération pour connecter plusieurs Streams @Java
[Java] Connectez-vous à MySQL
Connectez-vous de Java à PostgreSQL
Connectez-vous à DB avec Java
Connectez-vous à MySQL 8 avec Java
Connectez-vous de Java à MySQL à l'aide d'Eclipse
Comment basculer entre plusieurs versions de Java
[Java] Introduction à Java
Introduction à Java
Utilisez jenv pour activer plusieurs versions de Java
Connectez-vous à Aurora (MySQL) depuis une application Java
Opération de chaîne de caractères Essayez de changer le problème Java en TypeScript 9-3
[Java / PostgreSQL] Connectez l'application WEB à la base de données
[Java] Comment rendre plusieurs boucles for uniques
[Java] Fonctionnement du système de fichiers
[Java] [SQL Server] Se connecter à SQL Server 2017 local à l'aide de JDBC pour SQL Server
8 Correspond à plusieurs arguments
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Introduction à l'arithmétique des bits
Remplacement multiple de chaîne Java
Améliorations de Kotlin à Java
De Java à Ruby !!
À propos de l'opération de réduction du flux Java8
Introduction à la commande java
Connectez-vous à plusieurs instances MySQL avec SSL activé dans JDBC
Connectez-vous à la base de données avec spring boot + spring jpa et effectuez l'opération CRUD
Comment abaisser la version java
Migration de Cobol vers JAVA
[Java] Comment utiliser Map
Java ajoute un tableau au PDF
Comment désinstaller Java 8 (Mac)
Java pour jouer avec Function
Java - Comment créer JTable
Principes de base de l'utilisation des caractères (Java)
Comment utiliser java Facultatif
Nouvelles fonctionnalités de Java7 à Java8
Comment réduire les images Java
Comment rédiger un commentaire java
Comment utiliser la classe Java
[Java] Comment utiliser removeAll ()
[Java] Comment afficher les Wingdings
[Java] Introduction à l'expression lambda
Shell pour tuer les processus Java
Comment utiliser Java Map
Comment définir des constantes Java
[java] Raisons d'utiliser statique
Connectez CentOS 7 au VPN L2TP
Comment utiliser les variables Java
[Java] Introduction à l'API Stream
Java8 pour démarrer maintenant ~ Facultatif ~
Comment convertir la base Java
[Java] Convertir ArrayList en tableau
Connectez-vous à Oracle avec Eclipse!
[Android] Connectez-vous à MySQL (non terminé)
Thread Java pour comprendre vaguement
[Java] Comment implémenter le multithreading