Here are few ways to loop or iterate a Map or HashMap in Java.


package com.mkyong;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class LoopMap {

  public static void main(String[] args) {

	// initial a Map
	Map map = new HashMap();
	map.put("1", "Jan");
	map.put("2", "Feb");
	map.put("3", "Mar");
	map.put("4", "Apr");
	map.put("5", "May");
	map.put("6", "Jun");

	System.out.println("Example 1...");
	// Map -> Set -> Iterator -> Map.Entry -> troublesome
	Iterator iterator = map.entrySet().iterator();
	while (iterator.hasNext()) {
		Map.Entry mapEntry = (Map.Entry) iterator.next();
		System.out.println("The key is: " + mapEntry.getKey()
			+ ",value is :" + mapEntry.getValue());
	}

	System.out.println("Example 2...");
	// more elegant way
	for (Map.Entry entry : map.entrySet()) {
		System.out.println("Key : " + entry.getKey() + " Value : "
			+ entry.getValue());
	}

	System.out.println("Example 3...");
	// weired way, but works anyway
	for (Object key : map.keySet()) {
		System.out.println("Key : " + key.toString() + " Value : "
			+ map.get(key));
	}

  }

}

Output


Example 1...
The key is: 3,value is :Mar
The key is: 2,value is :Feb
The key is: 1,value is :Jan
The key is: 6,value is :Jun
The key is: 5,value is :May
The key is: 4,value is :Apr
Example 2...
Key : 3 Value : Mar
Key : 2 Value : Feb
Key : 1 Value : Jan
Key : 6 Value : Jun
Key : 5 Value : May
Key : 4 Value : Apr
Example 3...
Key : 3 Value : Mar
Key : 2 Value : Feb
Key : 1 Value : Jan
Key : 6 Value : Jun
Key : 5 Value : May
Key : 4 Value : Apr
Note
Which ways to go? It’s your personal preference.