Monday, 30 July 2012

Java: How to Iterate Through a Map?

There are multiple ways to iterate through a Java Map. Assuming the following map declaration:
Map<String,Object> m = new HashMap<String,Object>();
Here are the mutliple ways to iterate it.

Iterate on Keys and Values

// With an Iterator (with Generics)
Iterator<Entry<String, Object>> iterator
    = m.entrySet().iterator();

while ( iterator.hasNext() ) {
    Entry<String, Object> item = iterator.next();
    System.out.println(item.getKey()
      + " - " + item.getValue());
}

// Without an Iterator (without Generics)
Iterator iterator2 = m.entrySet().iterator();
while ( iterator2.hasNext() ) {
    Entry item = (Entry) iterator.next();
    System.out.println(item.getKey()
      + " - " + item.getValue());
}

// Using For Each (with Generics)
for ( Entry<String, Object> item : m.entrySet() ) {
    System.out.println(item.getKey()
      + " - " + item.getValue());
}

// Using For Each (without Generics)
for ( Entry item : m.entrySet() ) {
    System.out.println(item.getKey()
      + " - " + item.getValue());
}

// Inefficient (fetching value from key)
for ( String key : m.keySet() ) {
    System.out.println(key + " - " + m.get(key));
}

Iterate on Keys Only

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

Iterate on Values Only

for ( Object value : m.values() ) {
    System.out.println(value);
}