2010-07-27 30 views

Respuesta

16

Con for-each loop, utilice las teclas de Map.keySet() iterando, Map.values() para valores iterando y Map.entrySet() para iterar pares clave/valor.

Tenga en cuenta que todos estos son vistas directas al mapa que se utilizó para adquirirlos por lo que cualquier modificación que realice en cualquiera de los tres o el propio mapa reflejará a todos los demás también.

1
hashmap.keySet().iterator() 

utilizan un for loop para iterarlo.

a continuación, utilizar hashmap.get(item) para obtener los valores individuales,

alternativa sólo tiene que utilizar entrySet() para obtener un iterador de valores.

+1

O, dependiendo de lo que ping signifique por "valores", 'hashmap.values ​​(). Iterator()'. –

2
for (Map.Entry<T,U> e : map.entrySet()) 
{ 
    T key = e.getKey(); 
    U value = e.getValue(); 
    . 
    . 
    . 
} 

Además, si se utiliza un LinkedHashMap como la implementación, se le iterar en el orden en que se insertan los pares clave/valor. Si eso no es importante, use un HashMap.

+0

Respuesta muy clara, gracias –

21

Sí, esto se hace por conseguir el entrySet() del mapa. Por ejemplo:

Map<String, Object> map = new HashMap<String, Object>(); 

// ... 

for (Map.Entry<String, Object> entry : map.entrySet()) { 
    System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue()); 
} 

(Por supuesto, sustituir String y Object con los tipos que su determinada Map tiene - el código anterior es sólo un ejemplo).

2
public class abcd { 
    public static void main(String[] args) 
    { 
     Map<Integer, String> testMap = new HashMap<Integer, String>(); 
     testMap.put(10, "a"); 
     testMap.put(20, "b"); 
     testMap.put(30, "c"); 
     testMap.put(40, "d"); 
     for (Entry<Integer, String> entry : testMap.entrySet()) { 
      Integer key=entry.getKey(); 
      String value=entry.getValue(); 
     } 
    } 
}