6 methods how to loop a Map in Java
loop map
foreach
while loop
for loop
In this article will describe how to loop through a Map
object.
There are several ways to loop through a Map
object, the main difference is if you need the keys:values or just the values.
- method 1: is using
entrySet
method to get the key:value combination, then using an iterator it will loop through using a while loop. - method 2: is using
keySet
method to get the keys, then using afor
loop will go through all the keys and will take the values from themap
object. - method 3: is using
entrySet
method to get the key:value combination and will use afor
loop to go through all key:value object. - method 4: is Java 8 specific and is using the
forEach
method from themap
and the lambda to associate a method with it. - method 5: is using
keySet
to get the keys, then using awhile
loop will go through all the keys, the method is similar to method 2. - method 6: is using the
values
method to get a collection of values then using an iterator will loop through usingwhile
loop, also afor
loop can be used to loop the iterator object.
Note that different combinations of these 6 methods can be used to loop through different types of collections and just changing the looping method you can get a different method.
Full example
package com.admfactory.basic;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapLoopExample {
public static void main(String[] args) {
System.out.println("Map loop example");
System.out.println();
/** creating a new Map object */
Map<String, String> map = new HashMap<String, String>();
/** adding some values */
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
map.put("key4", "value4");
map.put("key5", "value5");
/** using while and interator method */
System.out.println("Method 1: ");
Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>) iterator.next();
System.out.println(entry.getKey() + " ==> " + entry.getValue());
}
System.out.println();
/** using for and keySet to get the keys and values */
System.out.println("Method 2:");
for (Object key : map.keySet()) {
System.out.println(key.toString() + " ==> " + map.get(key));
}
System.out.println();
/** using for and entrySet method */
System.out.println("Method 3: ");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " ==>" + entry.getValue());
}
System.out.println();
/** using Java 8, forEach and Lambda */
System.out.println("Method 4:");
map.forEach((k, v) -> System.out.println(k + " ==> " + v));
System.out.println();
System.out.println("Method 5:");
Set<String> set = map.keySet();
Iterator<String> keys = set.iterator();
while (keys.hasNext()) {
String key = keys.next();
System.out.println(key + " ==> " + map.get(key));
}
System.out.println();
System.out.println("Method 6: ");
Collection<String> valuesC = map.values();
Iterator<String> values = valuesC.iterator();
while (values.hasNext()) {
String value = values.next();
System.out.println(value);
}
}
}
Output
Map loop example
Method 1:
key1 ==> value1
key2 ==> value2
key5 ==> value5
key3 ==> value3
key4 ==> value4
Method 2:
key1 ==> value1
key2 ==> value2
key5 ==> value5
key3 ==> value3
key4 ==> value4
Method 3:
key1 ==>value1
key2 ==>value2
key5 ==>value5
key3 ==>value3
key4 ==>value4
Method 4:
key1 ==> value1
key2 ==> value2
key5 ==> value5
key3 ==> value3
key4 ==> value4
Method 5:
key1 ==> value1
key2 ==> value2
key5 ==> value5
key3 ==> value3
key4 ==> value4
Method 6:
value1
value2
value5
value3
value4