Java HashMap and other Map collections are not implemented Iterable interface like List or Set. However, you can iterate theirs key-value pairs, entrySet(), keySet() and values() as below

Iterate over key-value pairs

  • with Java 8+ forEach(BiConsumer) of Map interface
Map<String, Integer> immutableMap = Map.of("k1", 1, "k2", 2);  
immutableMap.forEach((k, v) -> System.out.printf("%s=%d%s", k, v, System.lineSeparator()));  


Iterate over HashMap's entrySet()

  • with for-each loop
Map<String, Integer> immutableMap = Map.of("k1", 1, "k2", 2);  
for (Map.Entry<String, Integer> entry : immutableMap.entrySet()) {  
   System.out.println(entry);
}
  • with Java 8+ forEach(Consumer) of Iterable interface
Map<String, Integer> immutableMap = Map.of("k1", 1, "k2", 2);  
immutableMap.entrySet().forEach(System.out::println);  


Iterate over HashMap's keySet()

  • with for-each loop
Map<String, Integer> immutableMap = Map.of("k1", 1, "k2", 2);  
for (String key : immutableMap.keySet()) {  
   System.out.println(key);           
}
  • with Java 8+ forEach(Consumer) of Iterable interface
Map<String, Integer> immutableMap = Map.of("k1", 1, "k2", 2);  
immutableMap.keySet().forEach(System.out::println);  


Iterate over HashMap's values()

  • with for-each loop
Map<String, Integer> immutableMap = Map.of("k1", 1, "k2", 2);  
for (Integer value : immutableMap.values()) {  
   System.out.println(value);           
}
  • with Java 8+ forEach(Consumer) of Iterable interface
Map<String, Integer> immutableMap = Map.of("k1", 1, "k2", 2);  
immutableMap.values().forEach(System.out::println);  


Conclusion

In this tutorial, we learned some ways to iterate over a HashMap key-value pairs, entry set, key set, and values by using the enhanced for-each loop, Java 8+ Map's forEach(BiConsumer) and Iterable's forEach(Consumer)