BAEL-885 - How to merge two Java streams? (#1986)

Use the java.util.stream.Stream interface as much as possible
This commit is contained in:
Wim Deblauwe 2017-06-04 09:54:38 +02:00 committed by Zeger Hendrikse
parent a5d5460a9f
commit 4b2e7a5e85
2 changed files with 36 additions and 28 deletions

View File

@ -5,31 +5,35 @@ import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertEquals;
public class JoolMergeStreamsTest { public class JoolMergeStreamsTest {
@Test @Test
public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() { public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() {
Seq<Integer> seq1 = Seq.of(1, 3, 5); Stream<Integer> seq1 = Stream.of(1, 3, 5);
Seq<Integer> seq2 = Seq.of(2, 4, 6); Stream<Integer> seq2 = Stream.of(2, 4, 6);
Seq<Integer> resultingSeq = seq1.append(seq2); Stream<Integer> resultingSeq = Seq.ofType(seq1, Integer.class)
.append(seq2);
assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6), assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6),
resultingSeq.toList()); resultingSeq.collect(Collectors.toList()));
} }
@Test @Test
public void givenThreeStreams_whenAppendingAndPrependingStreams_thenResultingStreamContainsElementsFromAllStreams() { public void givenThreeStreams_whenAppendingAndPrependingStreams_thenResultingStreamContainsElementsFromAllStreams() {
Seq<String> seq = Seq.of("foo", "bar"); Stream<String> seq = Stream.of("foo", "bar");
Seq<String> openingBracketSeq = Seq.of("["); Stream<String> openingBracketSeq = Stream.of("[");
Seq<String> closingBracketSeq = Seq.of("]"); Stream<String> closingBracketSeq = Stream.of("]");
Seq<String> resultingStream = seq.append(closingBracketSeq) Stream<String> resultingStream = Seq.ofType(seq, String.class)
.prepend(openingBracketSeq); .append(closingBracketSeq)
.prepend(openingBracketSeq);
Assert.assertEquals(Arrays.asList("[", "foo", "bar", "]"), Assert.assertEquals(Arrays.asList("[", "foo", "bar", "]"),
resultingStream.toList()); resultingStream.collect(Collectors.toList()));
} }
} }

View File

@ -4,6 +4,8 @@ import one.util.streamex.StreamEx;
import org.junit.Test; import org.junit.Test;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@ -11,41 +13,43 @@ public class StreamExMergeStreamsTest {
@Test @Test
public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() { public void givenTwoStreams_whenMergingStreams_thenResultingStreamContainsElementsFromBothStreams() {
StreamEx<Integer> stream1 = StreamEx.of(1, 3, 5); Stream<Integer> stream1 = Stream.of(1, 3, 5);
StreamEx<Integer> stream2 = StreamEx.of(2, 4, 6); Stream<Integer> stream2 = Stream.of(2, 4, 6);
StreamEx<Integer> resultingStream = stream1.append(stream2); Stream<Integer> resultingStream = StreamEx.of(stream1).append(stream2);
assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6), assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6),
resultingStream.toList()); resultingStream.collect(Collectors.toList()));
} }
@Test @Test
public void givenFourStreams_whenMergingStreams_thenResultingStreamContainsElementsFromAllStreams() { public void givenFourStreams_whenMergingStreams_thenResultingStreamContainsElementsFromAllStreams() {
StreamEx<Integer> stream1 = StreamEx.of(1, 3, 5); Stream<Integer> stream1 = Stream.of(1, 3, 5);
StreamEx<Integer> stream2 = StreamEx.of(2, 4, 6); Stream<Integer> stream2 = Stream.of(2, 4, 6);
StreamEx<Integer> stream3 = StreamEx.of(18, 15, 36); Stream<Integer> stream3 = Stream.of(18, 15, 36);
StreamEx<Integer> stream4 = StreamEx.of(99); Stream<Integer> stream4 = Stream.of(99);
StreamEx<Integer> resultingStream = stream1.append(stream2) Stream<Integer> resultingStream = StreamEx.of(stream1)
.append(stream3) .append(stream2)
.append(stream4); .append(stream3)
.append(stream4);
assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6, 18, 15, 36, 99), assertEquals(Arrays.asList(1, 3, 5, 2, 4, 6, 18, 15, 36, 99),
resultingStream.toList()); resultingStream.collect(Collectors.toList()));
} }
@Test @Test
public void givenThreeStreams_whenAppendingAndPrependingStreams_thenResultingStreamContainsElementsFromAllStreams() { public void givenThreeStreams_whenAppendingAndPrependingStreams_thenResultingStreamContainsElementsFromAllStreams() {
StreamEx<String> stream1 = StreamEx.of("foo", "bar"); Stream<String> stream1 = Stream.of("foo", "bar");
StreamEx<String> openingBracketStream = StreamEx.of("["); Stream<String> openingBracketStream = Stream.of("[");
StreamEx<String> closingBracketStream = StreamEx.of("]"); Stream<String> closingBracketStream = Stream.of("]");
StreamEx<String> resultingStream = stream1.append(closingBracketStream) Stream<String> resultingStream = StreamEx.of(stream1)
.prepend(openingBracketStream); .append(closingBracketStream)
.prepend(openingBracketStream);
assertEquals(Arrays.asList("[", "foo", "bar", "]"), assertEquals(Arrays.asList("[", "foo", "bar", "]"),
resultingStream.toList()); resultingStream.collect(Collectors.toList()));
} }
} }