From b3a291a580f0fedd207cf99db8aa820665c0b070 Mon Sep 17 00:00:00 2001 From: Predrag Maric Date: Tue, 29 Aug 2017 07:36:55 +0200 Subject: [PATCH] BAEL-1078 Stream Indices - Update pom.xml (#2516) * Update pom.xml * BAEL-1078 Stream indices --- core-java/pom.xml | 12 +++++ .../com/baeldung/stream/StreamIndices.java | 37 ++++++++++++++ .../baeldung/stream/StreamIndicesTest.java | 50 +++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/stream/StreamIndices.java create mode 100644 core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java diff --git a/core-java/pom.xml b/core-java/pom.xml index 586486027a..321a08dbff 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -196,6 +196,16 @@ hirondelle-date4j ${hirondelle-date4j.version} + + com.codepoetics + protonpack + ${protonpack.version} + + + one.util + streamex + ${streamex.version} + @@ -420,6 +430,8 @@ 4.6-b01 2.9.9 1.5.1 + 1.13 + 0.6.5 1.3 diff --git a/core-java/src/main/java/com/baeldung/stream/StreamIndices.java b/core-java/src/main/java/com/baeldung/stream/StreamIndices.java new file mode 100644 index 0000000000..b101bc2740 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/stream/StreamIndices.java @@ -0,0 +1,37 @@ +package com.baeldung.stream; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import com.codepoetics.protonpack.Indexed; +import com.codepoetics.protonpack.StreamUtils; + +public class StreamIndices { + + public static List getEvenIndexedStrings(String[] names) { + List evenIndexedNames = IntStream.range(0, names.length) + .filter(i -> i % 2 == 0).mapToObj(i -> names[i]) + .collect(Collectors.toList()); + return evenIndexedNames; + } + + public static List> getEvenIndexedStrings(List names) { + List> list = StreamUtils.zipWithIndex(names.stream()) + .filter(i -> i.getIndex() % 2 == 0).collect(Collectors.toList()); + return list; + } + + public static List> getOddIndexedStrings(List names) { + List> list = StreamUtils.zipWithIndex(names.stream()) + .filter(i -> i.getIndex() % 2 == 1).collect(Collectors.toList()); + return list; + } + + public static List getOddIndexedStrings(String[] names) { + List oddIndexedNames = IntStream.range(0, names.length) + .filter(i -> i % 2 == 1).mapToObj(i -> names[i]) + .collect(Collectors.toList()); + return oddIndexedNames; + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java b/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java new file mode 100644 index 0000000000..ca60544788 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java @@ -0,0 +1,50 @@ +package com.baeldung.stream; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; +import java.util.List; + +import org.junit.Test; + +import com.codepoetics.protonpack.Indexed; + +public class StreamIndicesTest { + + @Test + public void givenArray_whenGetIndexedStrings_thenReturnListOfEvenIndexedStrings() { + String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + List expectedResult = Arrays.asList("Afrim", "Besim", "Durim"); + List actualResult = StreamIndices.getEvenIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + + @Test + public void givenArray_whenGetIndexedStrings_thenReturnListOfOddStrings() { + String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + List expectedResult = Arrays.asList("Bashkim", "Lulzim", "Shpetim"); + List actualResult = StreamIndices.getOddIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + + @Test + public void givenList_whenGetIndexedStrings_thenReturnListOfEvenIndexedStrings() { + List names = Arrays.asList("Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"); + List> expectedResult = Arrays.asList(Indexed.index(0, "Afrim"), Indexed.index(2, "Besim"), Indexed.index(4, "Durim")); + List> actualResult = StreamIndices.getEvenIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + + @Test + public void givenList_whenGetIndexedStrings_thenReturnListOfOddIndexedStrings() { + List names = Arrays.asList("Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"); + List> expectedResult = Arrays.asList(Indexed.index(1, "Bashkim"), Indexed.index(3, "Lulzim"), Indexed.index(5, "Shpetim")); + List> actualResult = StreamIndices.getOddIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + +} \ No newline at end of file