Acceder a los valores de un Map eficientemente

por | junio 6, 2012

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/