Итерация по HashMap [дубликат]

Если вы в порядке с Apache commons lib

outputWriter.write(ArrayUtils.join(array, ","));
3176
задан Peter Mortensen 6 February 2018 в 22:55
поделиться

5 ответов

Выполните итерацию по entrySet () следующим образом:

public static void printMap(Map mp) {
    Iterator it = mp.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
        System.out.println(pair.getKey() + " = " + pair.getValue());
        it.remove(); // avoids a ConcurrentModificationException
    }
}

Подробнее о Map .

3166
ответ дан 22 November 2019 в 19:46
поделиться

Если вас интересуют только ключи, вы можете выполнить итерацию по keySet () карты:

Map<String, Object> map = ...;

for (String key : map.keySet()) {
    // ...
}

Если вам нужны только значения, используйте values ​​() :

for (Object value : map.values()) {
    // ...
}

Наконец, если вы хотите и ключ, и значение, используйте entrySet () :

for (Map.Entry<String, Object> entry : map.entrySet()) {
    String key = entry.getKey();
    Object value = entry.getValue();
    // ...
}

Одно предостережение: если вы хотите удалить элементы в середине итерации, вам нужно будет сделать это через итератор (см. ответ karim79 ). Однако изменение значений элементов можно (см. Map.Entry ).

4592
ответ дан 22 November 2019 в 19:46
поделиться

Вы можете перебирать записи в Map несколькими способами. Получите каждый ключ и значение следующим образом:

Map<?,?> map = new HashMap<Object, Object>();
for(Entry<?, ?> e: map.entrySet()){
    System.out.println("Key " + e.getKey());
    System.out.println("Value " + e.getValue());
}

Или вы можете получить список ключей с помощью

Collection<?> keys = map.keySet();
for(Object key: keys){
    System.out.println("Key " + key);
    System.out.println("Value " + map.get(key));
}

Если вы просто хотите получить все значения и не беспокоитесь о ключах, вы можете использовать:

Collection<?> values = map.values();
98
ответ дан 22 November 2019 в 19:46
поделиться

Зависит. Если вы знаете, что вам понадобятся и ключ, и значение каждой записи, пройдите через entrySet . Если вам просто нужны значения, тогда есть метод values ​​() . А если вам просто нужны ключи, используйте keyset () .

Плохая практика - перебирать все ключи, а затем внутри цикла всегда делать map.get (ключ) , чтобы получить значение. Если вы это делаете, то первый вариант, который я написал, для вас.

47
ответ дан 22 November 2019 в 19:46
поделиться

Умнее:

for (String key : hashMap.keySet()) {
    System.out.println("Key: " + key + ", Value: " + map.get(key));
}
68
ответ дан 22 November 2019 в 19:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: