diff --git a/core-java-modules/core-java-8/src/test/java/com/ossez/java8/Java8ForEachUnitTest.java b/core-java-modules/core-java-8/src/test/java/com/ossez/java8/Java8ForEachUnitTest.java new file mode 100644 index 0000000000..8c1a2fba03 --- /dev/null +++ b/core-java-modules/core-java-8/src/test/java/com/ossez/java8/Java8ForEachUnitTest.java @@ -0,0 +1,133 @@ +package com.ossez.java8; + +import java.util.*; +import java.util.function.Consumer; + + +import com.google.common.collect.Lists; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Java8ForEachUnitTest { + + private static final Logger logger = LoggerFactory.getLogger(Java8ForEachUnitTest.class); + + @Test + public void compareForEachMethods_thenPrintResults() { + + List names = new ArrayList<>(); + names.add("Larry"); + names.add("Steve"); + names.add("James"); + names.add("Conan"); + names.add("Ellen"); + + // Java 5 - for-loop + logger.debug("--- Enhanced for-loop ---"); + for (String name : names) { + logger.debug(name); + } + + // Java 8 - forEach + names.forEach(name -> { + System.out.println(name); + }); + + logger.debug("--- Print Consumer ---"); + Consumer printConsumer = new Consumer() { + public void accept(String name) { + System.out.println(name); + } + + ; + }; + + names.forEach(printConsumer); + + // Anonymous inner class that implements Consumer interface + logger.debug("--- Anonymous inner class ---"); + names.forEach(new Consumer() { + public void accept(String name) { + logger.debug(name); + } + }); + + // Java 8 - forEach - Lambda Syntax + logger.debug("--- forEach method ---"); + names.forEach(name -> logger.debug(name)); + + // Java 8 - forEach - Print elements using a Method Reference + logger.debug("--- Method Reference ---"); + names.forEach(logger::debug); + } + + @Test + public void givenList_thenIterateAndPrintResults() { + List names = Arrays.asList("Larry", "Steve", "James"); + + names.forEach(System.out::println); + } + + @Test + public void givenSet_thenIterateAndPrintResults() { + Set uniqueNames = new HashSet<>(Arrays.asList("Larry", "Steve", "James")); + + uniqueNames.forEach(System.out::println); + } + + @Test + public void givenQueue_thenIterateAndPrintResults() { + Queue namesQueue = new ArrayDeque<>(Arrays.asList("Larry", "Steve", "James")); + + namesQueue.forEach(System.out::println); + } + + @Test + public void givenMap_thenIterateAndPrintResults() { + Map namesMap = new HashMap<>(); + namesMap.put(1, "Larry"); + namesMap.put(2, "Steve"); + namesMap.put(3, "James"); + + namesMap.entrySet() + .forEach(entry -> System.out.println(entry.getKey() + " " + entry.getValue())); + } + + @Test + public void givenMap_whenUsingBiConsumer_thenIterateAndPrintResults2() { + Map namesMap = new HashMap<>(); + namesMap.put(1, "Larry"); + namesMap.put(2, "Steve"); + namesMap.put(3, "James"); + + namesMap.forEach((key, value) -> System.out.println(key + " " + value)); + } + + @Test + public void testIteratorAndFor() { + List testList = Arrays.asList("A", "B", "C"); + + Iterator iterator = testList.iterator(); + while (iterator.hasNext()) { + logger.debug((String) iterator.next()); + + } + + logger.debug("--- FOR ---"); + for (int i = 0; i < testList.size(); i++) { + logger.debug("{} > {}", i, testList.get(i)); + } + + logger.debug("--- FOR LOOP ---"); + for (String s : testList) { + logger.debug(s); + } + + logger.debug("--- FOR EACH ---"); + testList.forEach(s -> { + logger.debug(s); + }); + } + +}