From 424f295eddbea68097b8a905bcf92754cba17f47 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Wed, 8 Feb 2023 01:49:49 +0100 Subject: [PATCH] =?UTF-8?q?[streamOf-vs-intStreamRange]=20Understanding=20?= =?UTF-8?q?the=20Difference=20Between=20Str=E2=80=A6=20(#13429)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [streamOf-vs-intStreamRange] Understanding the Difference Between Stream.of and IntStream.range * [streamOf-vs-intStreamRange] fix indent --- ...weenStreamOfAndIntStreamRangeUnitTest.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 core-java-modules/core-java-streams-4/src/test/java/com/baeldung/streams/streamofvsintstream/DiffBetweenStreamOfAndIntStreamRangeUnitTest.java diff --git a/core-java-modules/core-java-streams-4/src/test/java/com/baeldung/streams/streamofvsintstream/DiffBetweenStreamOfAndIntStreamRangeUnitTest.java b/core-java-modules/core-java-streams-4/src/test/java/com/baeldung/streams/streamofvsintstream/DiffBetweenStreamOfAndIntStreamRangeUnitTest.java new file mode 100644 index 0000000000..23957fe2c6 --- /dev/null +++ b/core-java-modules/core-java-streams-4/src/test/java/com/baeldung/streams/streamofvsintstream/DiffBetweenStreamOfAndIntStreamRangeUnitTest.java @@ -0,0 +1,66 @@ +package com.baeldung.streams.streamofvsintstream; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.TreeSet; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import org.junit.jupiter.api.Test; + +public class DiffBetweenStreamOfAndIntStreamRangeUnitTest { + @Test + void givenStreamOfAndIntStreamRange_whenPeekSortAndFirst_shouldResultDifferent() { + Stream normalStream = Stream.of(1, 2, 3, 4, 5); + IntStream intStreamByRange = IntStream.range(1, 6); + List normalStreamPeekResult = new ArrayList<>(); + List intStreamPeekResult = new ArrayList<>(); + + // First, the regular Stream + normalStream.peek(normalStreamPeekResult::add) + .sorted() + .findFirst(); + assertEquals(Arrays.asList(1, 2, 3, 4, 5), normalStreamPeekResult); + + // Then, the IntStream + intStreamByRange.peek(intStreamPeekResult::add) + .sorted() + .findFirst(); + assertEquals(Arrays.asList(1), intStreamPeekResult); + } + + @Test + void givenStream_whenPeekAndFirst_shouldHaveOnlyFirstElement() { + Stream normalStream = Stream.of(1, 2, 3, 4, 5); + IntStream intStreamByRange = IntStream.range(1, 6); + List normalStreamPeekResult = new ArrayList<>(); + List intStreamPeekResult = new ArrayList<>(); + + // First, the regular Stream + normalStream.peek(normalStreamPeekResult::add) + .findFirst(); + assertEquals(Arrays.asList(1), normalStreamPeekResult); + + // Then, the IntStream + intStreamByRange.peek(intStreamPeekResult::add) + .findFirst(); + assertEquals(Arrays.asList(1), intStreamPeekResult); + } + + @Test + void givenSortedStream_whenPeekSortAndFirst_shouldOnlyHaveOneElement() { + List peekResult = new ArrayList<>(); + + TreeSet treeSet = new TreeSet<>(Arrays.asList("CCC", "BBB", "AAA", "DDD", "KKK")); + + treeSet.stream() + .peek(peekResult::add) + .sorted() + .findFirst(); + + assertEquals(Arrays.asList("AAA"), peekResult); + } +} \ No newline at end of file