From 525de599a297581444acd3bb4e487ae836a4e64d Mon Sep 17 00:00:00 2001 From: piomin Date: Wed, 24 Apr 2024 15:24:49 +0200 Subject: [PATCH 1/3] add stream gatherers --- pom.xml | 3 ++- .../background/StreamGathererTests.java | 21 +++++++++++++++++++ .../service/background/StreamTests.java | 12 +++++++++-- 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 src/test/java/pl/piomin/service/background/StreamGathererTests.java diff --git a/pom.xml b/pom.xml index 7430cce..9f25c73 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 1.0-SNAPSHOT - 21 + 22 piomin_sample-java-playground piomin https://sonarcloud.io @@ -58,6 +58,7 @@ 3.13.0 ${java.version} + --enable-preview diff --git a/src/test/java/pl/piomin/service/background/StreamGathererTests.java b/src/test/java/pl/piomin/service/background/StreamGathererTests.java new file mode 100644 index 0000000..f2a60cc --- /dev/null +++ b/src/test/java/pl/piomin/service/background/StreamGathererTests.java @@ -0,0 +1,21 @@ +package pl.piomin.service.background; + +import org.junit.jupiter.api.Test; + +import java.util.stream.Gatherers; +import java.util.stream.Stream; + +import static one.util.streamex.IntCollector.summing; + +public class StreamGathererTests { + + @Test + void slidingWindow() { + var errors = Stream + .of(2, 0, 1, 3, 4, 2, 3, 0, 3, 1, 0, 0, 1) + .gather(Gatherers.windowSliding(4)) + .map(x -> x.stream().collect(summing()) > 10) + .toList(); + System.out.println(errors); + } +} diff --git a/src/test/java/pl/piomin/service/background/StreamTests.java b/src/test/java/pl/piomin/service/background/StreamTests.java index ea502c8..d71efaa 100644 --- a/src/test/java/pl/piomin/service/background/StreamTests.java +++ b/src/test/java/pl/piomin/service/background/StreamTests.java @@ -93,7 +93,7 @@ void testEnums() { es.containsAll(x); } long end = System.nanoTime(); - System.out.println(x.getClass() + ": " + (end - beg)/1e9); + System.out.println(STR."\{x.getClass()}: \{(end - beg) / 1e9}"); } @Test @@ -109,6 +109,14 @@ void testSet() { hs.containsAll(x); } long end = System.nanoTime(); - System.out.println(x.getClass() + ": " + (end - beg)/1e9); + System.out.println(STR."\{x.getClass()}: \{(end - beg) / 1e9}"); + } + + @Test + void reduce() { + var listOfNumbers = List.of(1, 2, 3, 4, 5); + var sum = listOfNumbers.stream() + .reduce(0, Integer::sum); + System.out.println(sum); } } From 1d4c33d5fc3e1f95e6bc0c8239fd3647317f628a Mon Sep 17 00:00:00 2001 From: piomin Date: Thu, 25 Apr 2024 10:49:37 +0200 Subject: [PATCH 2/3] add stream gatherers --- .../service/background/StreamTests.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/test/java/pl/piomin/service/background/StreamTests.java b/src/test/java/pl/piomin/service/background/StreamTests.java index d71efaa..488500b 100644 --- a/src/test/java/pl/piomin/service/background/StreamTests.java +++ b/src/test/java/pl/piomin/service/background/StreamTests.java @@ -45,6 +45,22 @@ void testPartitioning() { Assertions.assertTrue(m.get(false).size() == 2); } + @Test + void testPartitioningV2() { + Stream s1 = Stream.of( + EmployeeBuilder.builder().firstName("AAA").lastName("BBB").position("developer").salary(10000).build(), + EmployeeBuilder.builder().firstName("AAB").lastName("BBC").position("architect").salary(15000).build(), + EmployeeBuilder.builder().firstName("AAC").lastName("BBD").position("developer").salary(13000).build(), + EmployeeBuilder.builder().firstName("AAD").lastName("BBE").position("tester").salary(7000).build(), + EmployeeBuilder.builder().firstName("AAE").lastName("BBF").position("tester").salary(9000).build() + ); + + var m = s1.collect(Collectors.partitioningBy(emp -> emp.salary() > 10000)); + assertEquals(2, m.size()); + assertEquals(m.get(true).size(), 2); + assertEquals(m.get(false).size(), 3); + } + @Test void testGroupingWithCalculation() { Stream s1 = Stream.of( @@ -58,6 +74,8 @@ void testGroupingWithCalculation() { var m = s1.collect(Collectors.groupingBy(Employee::position, Collectors.summingInt(Employee::salary))); assertEquals(3, m.size()); assertEquals(m.get("developer"), 23000); + assertEquals(m.get("architect"), 15000); + assertEquals(m.get("tester"), 16000); } @Test @@ -77,7 +95,9 @@ void testMutability() { @Test void testUnmodifiable() { - assertThrows(NullPointerException.class, () -> Stream.of(null, "Green", "Yellow").collect(Collectors.toUnmodifiableList())); + assertThrows(NullPointerException.class, () -> + Stream.of(null, "Green", "Yellow") + .collect(Collectors.toUnmodifiableList())); } @Test From 05c5be0a607ab2b9ad076c0f8f64bdeebe536170 Mon Sep 17 00:00:00 2001 From: piomin Date: Thu, 25 Apr 2024 12:57:07 +0200 Subject: [PATCH 3/3] add stream gatherers --- .../java/pl/piomin/service/background/StreamGathererTests.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/pl/piomin/service/background/StreamGathererTests.java b/src/test/java/pl/piomin/service/background/StreamGathererTests.java index f2a60cc..1da6949 100644 --- a/src/test/java/pl/piomin/service/background/StreamGathererTests.java +++ b/src/test/java/pl/piomin/service/background/StreamGathererTests.java @@ -14,6 +14,7 @@ void slidingWindow() { var errors = Stream .of(2, 0, 1, 3, 4, 2, 3, 0, 3, 1, 0, 0, 1) .gather(Gatherers.windowSliding(4)) + .peek(a -> System.out.println(a)) .map(x -> x.stream().collect(summing()) > 10) .toList(); System.out.println(errors);