Iterating Over a Map in Java

A Map<K, V> cannot be iterated directly using an iterator like Collection because it stores key–value pairs, not single elements.

However, Java provides three main ways to iterate:

  1. Iterate over keys
  2. Iterate over values
  3. Iterate over entries (recommended)

Below are complete examples.


1. Iterate Using keySet()

Iterates only through keys.

Example:

Map<String, Integer> scores = new HashMap<>();
scores.put("Swapnil", 90);
scores.put("Kuwar", 85);

for (String key : scores.keySet()) {
    System.out.println(key);
}

Iterator<String> it = scores.keySet().iterator();
while (it.hasNext()) {
    System.out.println("Key: " + it.next());
}

2. Iterate Using values()

Iterates only through values.

Example:

for (Integer value : scores.values()) {
    System.out.println(value);
}

Iterator<Integer> valueIterator = scores.values().iterator();
while (valueIterator.hasNext()) {
    System.out.println("Value: " + valueIterator.next());
}

3. Iterate Using entrySet() (Best Way)

This provides both key and value at the same time.

Example:

for (Map.Entry<String, Integer> entry : scores.entrySet()) {
    System.out.println(entry.getKey() + " → " + entry.getValue());
}

Using Iterator:

Iterator<Map.Entry<String, Integer>> entryIt = scores.entrySet().iterator();
while (entryIt.hasNext()) {
    Map.Entry<String, Integer> entry = entryIt.next();
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

4. Using Java 8 forEach

Example:

scores.forEach((key, value) -> {
    System.out.println(key + " : " + value);
});

5. Iterate Over Keys and Fetch Values Manually (Less Efficient)

Example:

for (String key : scores.keySet()) {
    Integer value = scores.get(key);
    System.out.println(key + " => " + value);
}

Note:

  • This is slower because get() is called for each key.
  • Prefer entrySet() for performance.

Which Iteration Method Should You Use?

Method Use Case
keySet() When you only need keys
values() When you only need values
entrySet() Best choice for key + value
forEach Simple and clean syntax

Summary

  • Map does not extend Collection, so it has its own iteration API.
  • entrySet() is the most efficient for key–value iteration.
  • Java provides Iterator support for all 3 views: keys, values, and entries.
  • Enhanced for-loop and lambdas simplify iteration.