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!
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-
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
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.
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.
"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