From 4b2e7a5e8500c42e44eac69a6de986a098ff2d72 Mon Sep 17 00:00:00 2001 From: Wim Deblauwe Date: Sun, 4 Jun 2017 09:54:38 +0200 Subject: [PATCH] BAEL-885 - How to merge two Java streams? (#1986) Use the java.util.stream.Stream interface as much as possible --- .../baeldung/stream/JoolMergeStreamsTest.java | 24 ++++++----- .../stream/StreamExMergeStreamsTest.java | 40 ++++++++++--------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/stream/JoolMergeStreamsTest.java b/libraries/src/test/java/com/baeldung/stream/JoolMergeStreamsTest.java index e73861d8af..f35073e9d9 100644 --- a/libraries/src/test/java/com/baeldung/stream/JoolMergeStreamsTest.java +++ b/libraries/src/test/java/com/baeldung/stream/JoolMergeStreamsTest.java @@ -5,31 +5,35 @@ import org.junit.Assert; import org.junit.Test; import java.util.Arrays; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static junit.framework.TestCase.assertEquals; public class JoolMergeStreamsTest { @Test public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() { - Seq seq1 = Seq.of(1, 3, 5); - Seq seq2 = Seq.of(2, 4, 6); + Stream seq1 = Stream.of(1, 3, 5); + Stream seq2 = Stream.of(2, 4, 6); - Seq resultingSeq = seq1.append(seq2); + Stream resultingSeq = Seq.ofType(seq1, Integer.class) + .append(seq2); assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6), - resultingSeq.toList()); + resultingSeq.collect(Collectors.toList())); } @Test public void givenThreeStreams_whenAppendingAndPrependingStreams_thenResultingStreamContainsElementsFromAllStreams() { - Seq seq = Seq.of("foo", "bar"); - Seq openingBracketSeq = Seq.of("["); - Seq closingBracketSeq = Seq.of("]"); + Stream seq = Stream.of("foo", "bar"); + Stream openingBracketSeq = Stream.of("["); + Stream closingBracketSeq = Stream.of("]"); - Seq resultingStream = seq.append(closingBracketSeq) - .prepend(openingBracketSeq); + Stream resultingStream = Seq.ofType(seq, String.class) + .append(closingBracketSeq) + .prepend(openingBracketSeq); Assert.assertEquals(Arrays.asList("[", "foo", "bar", "]"), - resultingStream.toList()); + resultingStream.collect(Collectors.toList())); } } \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/stream/StreamExMergeStreamsTest.java b/libraries/src/test/java/com/baeldung/stream/StreamExMergeStreamsTest.java index a964d76e8a..6ac3cc14cb 100644 --- a/libraries/src/test/java/com/baeldung/stream/StreamExMergeStreamsTest.java +++ b/libraries/src/test/java/com/baeldung/stream/StreamExMergeStreamsTest.java @@ -4,6 +4,8 @@ import one.util.streamex.StreamEx; import org.junit.Test; import java.util.Arrays; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static org.junit.Assert.assertEquals; @@ -11,41 +13,43 @@ public class StreamExMergeStreamsTest { @Test public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() { - StreamEx stream1 = StreamEx.of(1, 3, 5); - StreamEx stream2 = StreamEx.of(2, 4, 6); + Stream stream1 = Stream.of(1, 3, 5); + Stream stream2 = Stream.of(2, 4, 6); - StreamEx resultingStream = stream1.append(stream2); + Stream resultingStream = StreamEx.of(stream1).append(stream2); assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6), - resultingStream.toList()); + resultingStream.collect(Collectors.toList())); } @Test public void givenFourStreams_whenMergingStreams_thenResultingStreamContainsElementsFromAllStreams() { - StreamEx stream1 = StreamEx.of(1, 3, 5); - StreamEx stream2 = StreamEx.of(2, 4, 6); - StreamEx stream3 = StreamEx.of(18, 15, 36); - StreamEx stream4 = StreamEx.of(99); + Stream stream1 = Stream.of(1, 3, 5); + Stream stream2 = Stream.of(2, 4, 6); + Stream stream3 = Stream.of(18, 15, 36); + Stream stream4 = Stream.of(99); - StreamEx resultingStream = stream1.append(stream2) - .append(stream3) - .append(stream4); + Stream resultingStream = StreamEx.of(stream1) + .append(stream2) + .append(stream3) + .append(stream4); assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6, 18, 15, 36, 99), - resultingStream.toList()); + resultingStream.collect(Collectors.toList())); } @Test public void givenThreeStreams_whenAppendingAndPrependingStreams_thenResultingStreamContainsElementsFromAllStreams() { - StreamEx stream1 = StreamEx.of("foo", "bar"); - StreamEx openingBracketStream = StreamEx.of("["); - StreamEx closingBracketStream = StreamEx.of("]"); + Stream stream1 = Stream.of("foo", "bar"); + Stream openingBracketStream = Stream.of("["); + Stream closingBracketStream = Stream.of("]"); - StreamEx resultingStream = stream1.append(closingBracketStream) - .prepend(openingBracketStream); + Stream resultingStream = StreamEx.of(stream1) + .append(closingBracketStream) + .prepend(openingBracketStream); assertEquals(Arrays.asList("[", "foo", "bar", "]"), - resultingStream.toList()); + resultingStream.collect(Collectors.toList())); } }