2010-07-27 2 views
17

Есть ли способ перебрать java-хэш-карту и распечатать все значения для каждого ключа, который является частью Hashmap?java hashmap key iteration

ответ

16

С for-each loop, использовать Map.keySet() для переборе ключей, Map.values() для переборе значений и Map.entrySet() для перебора пар ключ/значение.

Обратите внимание, что все это прямые виды на карту, которая использовалась для их приобретения, поэтому любые изменения, внесенные вами в любой из трех или самой карты, будут отражать и все остальные.

1
hashmap.keySet().iterator() 

использовать цикл for для его повторения.

затем использовать hashmap.get(item), чтобы получить отдельные значения,

В качестве альтернативы просто использовать entrySet() для получения итератора для значений.

+1

Или, в зависимости от того, что пинг означает «значения», 'hashmap.values ​​(). Iterator()'. –

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

Кроме того, если вы используете LinkedHashMap в качестве реализации, вы будете перебирать в порядке были вставлены пар ключ/значение. Если это не важно, используйте HashMap.

+0

Очень четкий ответ, спасибо –

21

Да, вы делаете это, получая entrySet() на карте. Например:

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()); 
} 

(Ofcourse, замените String и Object с типами, что ваш конкретный Map имеет - код выше это только пример).

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(); 
     } 
    } 
}