diff --git a/java-vavr-stream/pom.xml b/java-vavr-stream/pom.xml new file mode 100644 index 0000000000..ca3807cd15 --- /dev/null +++ b/java-vavr-stream/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + com.baeldung.samples + java-vavr-stream + 1.0 + jar + + UTF-8 + 1.8 + 1.8 + + + + io.vavr + vavr + 0.9.2 + + + \ No newline at end of file diff --git a/java-vavr-stream/src/main/java/com/baeldung/samples/java/vavr/VavrSampler.java b/java-vavr-stream/src/main/java/com/baeldung/samples/java/vavr/VavrSampler.java new file mode 100644 index 0000000000..d539342f69 --- /dev/null +++ b/java-vavr-stream/src/main/java/com/baeldung/samples/java/vavr/VavrSampler.java @@ -0,0 +1,98 @@ +package com.baeldung.samples.java.vavr; + +import io.vavr.collection.Stream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.IntStream; + +/** + * + * @author baeldung + */ +public class VavrSampler { + + static int[] intArray = new int[]{1, 2, 4}; + static List intList = new ArrayList(); + static int[][] intOfInts = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; + + public static void main(String[] args) { + vavrStreamElementAccess(); + System.out.println("===================================="); + vavrParallelStreamAccess(); + System.out.println("===================================="); + jdkFlatMapping(); + System.out.println("===================================="); + vavrStreamManipulation(); + System.out.println("===================================="); + vavrStreamDistinct(); + } + + public static void vavrStreamElementAccess() { + System.out.println("Vavr Element Access"); + System.out.println("===================================="); + Stream vavredStream = Stream.ofAll(intArray); + System.out.println("Vavr index access: " + vavredStream.get(2)); + System.out.println("Vavr head element access: " + vavredStream.get()); + + Stream vavredStringStream = Stream.of("foo", "bar", "baz"); + System.out.println("Find foo " + vavredStringStream.indexOf("foo")); + } + + public static void vavrParallelStreamAccess() { + try { + System.out.println("Vavr Stream Concurrent Modification"); + System.out.println("===================================="); + Stream vavrStream = Stream.ofAll(intList); + intList.add(5); + vavrStream.forEach(i -> System.out.println("in a Vavr Stream: " + i)); + } catch (Exception ex) { + ex.printStackTrace(); + } + + Stream wrapped = Stream.ofAll(intArray); + intArray[2] = 5; + wrapped.forEach(i -> System.out.println("Vavr looped " + i)); + } + + public static void jdkFlatMapping() { + System.out.println("JDK FlatMap -> Uncomment line 68 to test"); + System.out.println("===================================="); + int[][] intOfInts = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; + + IntStream mapToInt = Arrays.stream(intOfInts) + .map(intArr -> Arrays.stream(intArr)) + .flatMapToInt(val -> val.map(n -> { + return n * n; + })) + .peek(n -> System.out.println("Peeking at " + n)); + //Uncomment to execute pipeline + //mapToInt.forEach(n -> System.out.println("FlatMapped Result "+n)); + } + + public static void vavrStreamManipulation() { + System.out.println("Vavr Stream Manipulation"); + System.out.println("===================================="); + List stringList = new ArrayList<>(); + stringList.add("foo"); + stringList.add("bar"); + stringList.add("baz"); + Stream vavredStream = Stream.ofAll(stringList); + vavredStream.forEach(item -> System.out.println("Vavr Stream item: " + item)); + Stream vavredStream2 = vavredStream.insert(2, "buzz"); + vavredStream2.forEach(item -> System.out.println("Vavr Stream item after stream addition: " + item)); + stringList.forEach(item -> System.out.println("List item after stream addition: " + item)); + Stream deletionStream = vavredStream.remove("bar"); + deletionStream.forEach(item -> System.out.println("Vavr Stream item after stream item deletion: " + item)); + + } + + public static void vavrStreamDistinct() { + Stream vavredStream = Stream.of("foo", "bar", "baz", "buxx", "bar", "bar", "foo"); + Stream distinctVavrStream = vavredStream.distinctBy((y, z) -> { + return y.compareTo(z); + }); + distinctVavrStream.forEach(item -> System.out.println("Vavr Stream item after distinct query " + item)); + + } +} diff --git a/pom.xml b/pom.xml index 1c6a692705..73f1b27f7e 100644 --- a/pom.xml +++ b/pom.xml @@ -87,6 +87,7 @@ vavr java-lite + java-vavr-stream javax-servlets javaxval jaxb