From 9a2827f84e7782e806c45d58b7c0d4748b27d57a Mon Sep 17 00:00:00 2001 From: Pritam Banerjee Date: Tue, 23 May 2017 03:32:06 -0700 Subject: [PATCH] BAEL-725: Map Iteration --- .../baeldung/map/iteration/MapIteration.java | 57 ++++++++++++++++ .../map/iteration/MapIterationTest.java | 68 +++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/map/iteration/MapIteration.java create mode 100644 core-java/src/test/java/com/baeldung/map/iteration/MapIterationTest.java diff --git a/core-java/src/main/java/com/baeldung/map/iteration/MapIteration.java b/core-java/src/main/java/com/baeldung/map/iteration/MapIteration.java new file mode 100644 index 0000000000..3b2a213aa0 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/map/iteration/MapIteration.java @@ -0,0 +1,57 @@ +package com.baeldung.map.iteration; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map; + +public class MapIteration { + + public ArrayList iterateUsingEntrySet(Map map) { + ArrayList mapKeyValueList = new ArrayList(); + for (Map.Entry entry : map.entrySet()) { + mapKeyValueList.add(entry.getKey() + ":" + entry.getValue()); + } + return mapKeyValueList; + } + + public ArrayList iterateUsingLambda(Map map) { + ArrayList mapKeyValueList = new ArrayList(); + map.forEach((k, v) -> mapKeyValueList.add(k + ":" + v)); + return mapKeyValueList; + } + + public ArrayList iterateUsingIteratorAndEntry(Map map) { + ArrayList mapKeyValueList = new ArrayList(); + Iterator> iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Map.Entry pair = iterator.next(); + mapKeyValueList.add(pair.getKey() + ":" + pair.getValue()); + } + + return mapKeyValueList; + } + + public ArrayList iterateUsingKeySetAndForeach(Map map) { + ArrayList mapKeyValueList = new ArrayList(); + for (String key : map.keySet()) { + mapKeyValueList.add(key + ":" + map.get(key)); + } + return mapKeyValueList; + } + + public ArrayList iterateUsingStreamAPI(Map map) { + ArrayList mapKeyValueList = new ArrayList(); + map.entrySet().stream().forEach(e -> mapKeyValueList.add(e.getKey() + ":" + e.getValue())); + return mapKeyValueList; + } + + public ArrayList iterateKeys(Map map) { + ArrayList mapKeyList = new ArrayList(); + for (String key : map.keySet()) { + mapKeyList.add(key); + } + return mapKeyList; + } + +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/map/iteration/MapIterationTest.java b/core-java/src/test/java/com/baeldung/map/iteration/MapIterationTest.java new file mode 100644 index 0000000000..5953c118fd --- /dev/null +++ b/core-java/src/test/java/com/baeldung/map/iteration/MapIterationTest.java @@ -0,0 +1,68 @@ +package com.baeldung.map.iteration; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import org.junit.BeforeClass; +import org.junit.Test; + +public class MapIterationTest { + + public static Map testMap = new HashMap(); + public static String testString1 = "One:1"; + public static String testString2 = "Two:2"; + public static String testString3 = "Three:3"; + + @BeforeClass + public static void createTestData() { + testMap.put("One", 1); + testMap.put("Three", 3); + testMap.put("Two", 2); + } + + @Test + public void iterateUsingEntrySet_test() { + MapIteration mapIteration = new MapIteration(); + ArrayList list = mapIteration.iterateUsingEntrySet(testMap); + assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); + } + + @Test + public void iterateUsingLambda_test() { + MapIteration mapIteration = new MapIteration(); + ArrayList list = mapIteration.iterateUsingLambda(testMap); + assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); + } + + @Test + public void iterateUsingIteratorAndEntry_test() { + MapIteration mapIteration = new MapIteration(); + ArrayList list = mapIteration.iterateUsingIteratorAndEntry(testMap); + assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); + } + + @Test + public void iterateUsingKeySetAndForeach_test() { + MapIteration mapIteration = new MapIteration(); + ArrayList list = mapIteration.iterateUsingKeySetAndForeach(testMap); + assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); + } + + @Test + public void iterateUsingStreamAPI_test() { + MapIteration mapIteration = new MapIteration(); + ArrayList list = mapIteration.iterateUsingStreamAPI(testMap); + assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); + } + + @Test + public void iterateKeys_test() { + MapIteration mapIteration = new MapIteration(); + ArrayList list = mapIteration.iterateKeys(testMap); + assertTrue((list.contains("One")) && (list.contains("Two")) && (list.contains("Three"))); + } + +}