To iterate over keys, values, or entries of a Map,
use keySet(), values() and entrySet() methods of a map
which returns a Set of keys, a Collection of values, and a Set of entries, respectively.
The following snippet of code shows how to print all keys of a map:
import java.util.HashMap; import java.util.Map; import java.util.Set; //from w ww. ja v a 2 s.c o m public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("CSS", "style"); map.put("HTML", "mark up"); map.put("Oracle", "database"); map.put("XML", "data"); // Get the set of keys Set<String> keys = map.keySet(); // Print all keys using the forEach() method. keys.forEach(System.out::println); } }
The code above generates the following result.
Each key-value pair in a map is called an entry.
An entry is represented by an instance of the Map.Entry<K,V> interface.
Map.Entry is an inner static interface of the Map interface.
Map.Entry has three methods called
getKey(), getValue(), and setValue(),
which return the key of the entry, the value
of the entry, and sets a new value in the entry, respectively.
A typical iteration over an entry set of a Map is written as follows:
import java.util.HashMap; import java.util.Map; import java.util.Set; // w w w .j a va 2 s . c om public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("CSS", "style"); map.put("HTML", "mark up"); map.put("Oracle", "database"); map.put("XML", "data"); // Get the entry Set Set<Map.Entry<String, String>> entries = map.entrySet(); entries.forEach((Map.Entry<String, String> entry) -> { String key = entry.getKey(); String value = entry.getValue(); System.out.println("key=" + key + ", value=" + value); }); } }
The code above generates the following result.
forEach(BiConsumer<? super K,? super V> action) method
from the Map interface
iterates over all entries in the map.
The method takes a BiConsumer instance whose
first argument is the key and second argument is the value
for the current entry in the map.
import java.util.HashMap; import java.util.Map; /*from w ww .j ava2 s .c o m*/ public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("CSS", "style"); map.put("HTML", "mark up"); map.put("Oracle", "database"); map.put("XML", "data"); map.forEach((String key, String value) -> { System.out.println("key=" + key + ", value=" + value); }); } }
The code above generates the following result.
The following code demonstrates how to get three different views of a Map and iterate over the elements in those views.
import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; /* w ww . j av a 2s. c o m*/ public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("CSS", "style"); map.put("HTML", "mark up"); map.put("Oracle", "database"); map.put("XML", "data"); System.out.println("Map: " + map.toString()); listValues(map); listEntries(map); } public static void listKeys(Map<String, String> map) { System.out.println("Key Set:"); Set<String> keys = map.keySet(); keys.forEach(System.out::println); System.out.println(); } public static void listValues(Map<String, String> map) { System.out.println("Values Collection:"); Collection<String> values = map.values(); values.forEach(System.out::println); System.out.println(); } public static void listEntries(Map<String, String> map) { System.out.println("Entry Set:"); // Get the entry Set Set<Map.Entry<String, String>> entries = map.entrySet(); entries.forEach((Map.Entry<String, String> entry) -> { String key = entry.getKey(); String value = entry.getValue(); System.out.println("key=" + key + ", value=" + value); }); } }
The code above generates the following result.