From b2f3115cfda2dd24d38b29f9553cb462f7c727bb Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Sun, 21 Oct 2018 00:26:30 +0530 Subject: [PATCH 1/4] BAEL-9040 Two quick improvements to the foreach article -Added more tests for forEach tutorial --- .../baeldung/java8/Java8ForEachUnitTest.java | 63 ++++++++++++++++--- 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java index 6a485e939f..7840c84b7d 100644 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java +++ b/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java @@ -4,8 +4,15 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayDeque; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.Set; import java.util.function.Consumer; public class Java8ForEachUnitTest { @@ -29,8 +36,18 @@ public class Java8ForEachUnitTest { } // Java 8 - forEach - LOG.debug("--- forEach method ---"); - names.forEach(name -> LOG.debug(name)); + names.forEach(name -> { + System.out.println(name); + }); + + LOG.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 LOG.debug("--- Anonymous inner class ---"); @@ -40,17 +57,45 @@ public class Java8ForEachUnitTest { } }); - // Create a Consumer implementation to then use in a forEach method - Consumer consumerNames = name -> { - LOG.debug(name); - }; - LOG.debug("--- Implementation of Consumer interface ---"); - names.forEach(consumerNames); + // Java 8 - forEach - Lambda Syntax + LOG.debug("--- forEach method ---"); + names.forEach(name -> LOG.debug(name)); - // Print elements using a Method Reference + // Java 8 - forEach - Print elements using a Method Reference LOG.debug("--- Method Reference ---"); names.forEach(LOG::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())); } } From 277898ac24a3088b2adaaf6c6b71a1b59c5e64eb Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sun, 21 Oct 2018 21:37:25 +0300 Subject: [PATCH 2/4] update zonedatetime test --- .../zoneddatetime/ZonedDateTimeUnitTest.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java b/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java index 355fef35c6..c95d1a1203 100644 --- a/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java @@ -1,19 +1,22 @@ package com.baeldung.zoneddatetime; +import static org.junit.jupiter.api.Assertions.assertThrows; + import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.logging.Logger; -import org.junit.Test; +import org.junit.jupiter.api.Test; public class ZonedDateTimeUnitTest { private static final Logger log = Logger.getLogger(ZonedDateTimeUnitTest.class.getName()); @Test - public void testZonedDateTimeToString() { + public void givenZonedDateTime_whenConvertToString_thenOk() { ZonedDateTime zonedDateTimeNow = ZonedDateTime.now(ZoneId.of("UTC")); ZonedDateTime zonedDateTimeOf = ZonedDateTime.of(2018, 01, 01, 0, 0, 0, 0, ZoneId.of("UTC")); @@ -33,9 +36,21 @@ public class ZonedDateTimeUnitTest { } @Test - public void testZonedDateTimeFromString() { + public void givenString_whenParseZonedDateTime_thenOk() { + ZonedDateTime zonedDateTime = ZonedDateTime.parse("2011-12-03T10:15:30+01:00"); - ZonedDateTime zonedDateTime = ZonedDateTime.parse("2011-12-03T10:15:30+01:00", DateTimeFormatter.ISO_ZONED_DATE_TIME); + log.info(zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME)); + } + + @Test + public void givenString_whenParseZonedDateTimeWithoutZone_thenException() { + assertThrows(DateTimeParseException.class, () -> ZonedDateTime.parse("2011-12-03T10:15:30", DateTimeFormatter.ISO_DATE_TIME)); + } + + @Test + public void givenString_whenParseLocalDateTimeAtZone_thenOk() { + ZoneId timeZone = ZoneId.systemDefault(); + ZonedDateTime zonedDateTime = LocalDateTime.parse("2011-12-03T10:15:30", DateTimeFormatter.ISO_DATE_TIME).atZone(timeZone); log.info(zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME)); } From 906082b26f19143c1277ce43d8de68e0befdb0f4 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Mon, 22 Oct 2018 20:05:17 +0300 Subject: [PATCH 3/4] fix formating --- .../com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java b/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java index c95d1a1203..65f63bc787 100644 --- a/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java +++ b/java-dates/src/test/java/com/baeldung/zoneddatetime/ZonedDateTimeUnitTest.java @@ -24,10 +24,10 @@ public class ZonedDateTimeUnitTest { LocalDateTime localDateTime = LocalDateTime.now(); ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.of("UTC")); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy - hh:mm:ss Z"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy - HH:mm:ss Z"); String formattedString = zonedDateTime.format(formatter); - DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("MM/dd/yyyy - hh:mm:ss z"); + DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("MM/dd/yyyy - HH:mm:ss z"); String formattedString2 = zonedDateTime.format(formatter2); log.info(formattedString); From 6ef143f57060e7dd32302a108b3439e0368c59f0 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 23 Oct 2018 22:00:06 +0530 Subject: [PATCH 4/4] BAEL-9040 Two quick improvements to the foreach article -Added Map's forEach BiConsumer example --- .../baeldung/java8/Java8ForEachUnitTest.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java index 7840c84b7d..f5201f54cf 100644 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java +++ b/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java @@ -1,9 +1,5 @@ package com.baeldung.java8; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; @@ -15,6 +11,10 @@ import java.util.Queue; import java.util.Set; import java.util.function.Consumer; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class Java8ForEachUnitTest { private static final Logger LOG = LoggerFactory.getLogger(Java8ForEachUnitTest.class); @@ -98,4 +98,14 @@ public class Java8ForEachUnitTest { .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)); + } + }