итерация ключа hashmap java - PullRequest
       36

итерация ключа hashmap java

17 голосов
/ 27 июля 2010

Есть ли способ перебрать jash Hashmap и распечатать все значения для каждого ключа, который является частью Hashmap?

Ответы [ 7 ]

23 голосов
/ 27 июля 2010

Да, вы делаете это, получая 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());
}

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

16 голосов
/ 27 июля 2010

С для каждого цикла , используйте Map.keySet() для итерации ключей, Map.values() для итерации значений и Map.entrySet() для итерации пар ключ / значение.

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

3 голосов
/ 17 мая 2012
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();
        }
    }
}
2 голосов
/ 27 июля 2010
for (Map.Entry<T,U> e : map.entrySet())
{
    T key = e.getKey();
    U value = e.getValue();
    .
    .
    .
}

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

1 голос
/ 27 июля 2010
hashmap.keySet().iterator()

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

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

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

0 голосов
/ 19 апреля 2019

Будьте проще, пожалуйста:

HashMap<String,String> HeyHoLetsGo = new HashMap();

HeyHoLetsGo.put("I", "wanna be your dog");
HeyHoLetsGo.put("Sheena", "is a punk rocker");
HeyHoLetsGo.put("Rudie", "can't fail");

for ( String theKey : HeyHoLetsGo.keySet() ){
    System.out.println(theKey + " "+HeyHoLetsGo.get(theKey));
}
0 голосов
/ 19 сентября 2018

Java 8 добавлена ​​Map.forEach, которую вы можете использовать следующим образом:

map.forEach((k, v) -> System.out.println("key=" + k + " value=" + v));

Там также replaceAll, если вы хотите обновить значения:

map.replaceAll((k, v) -> {
    int newValue = v + 1;
    System.out.println("key=" + k + " value=" + v + " new value=" + newValue);
    return newValue;
});
...