Un error muy común es recuperar valores de un Map mientras se itera sobre las claves del Map con keySet(). Las llamadas del tipo Map.get(key) para cada entrada consumen demasiados recursos y debe evitarse.
Se debe usar el iterador entrySet() en lugar de Map.get(key) para las búsquedas.
Procedimiento incorrecto:
[java]
for (Object key: map.keySet())
doSomething(map.get(key));
[/java]
Procedimiento correcto:
[java]
for (Map.Entry entry: map.entrySet())
doSomething(entry.getValue());
[/java]entrySet() proporciona un acceso directo a los datos de la estructura interna del Map(un array de pares key-value) sin realizar busquedas adicionales y por lo tanto el evitar iterar sobre la data del Map.
Fuente: http://javaantipatterns.wordpress.com/2007/11/22/accessing-the-map-values-using-keyset-iterator/