ping
ping

Reputation: 1239

java hashmap key iteration

Is there any way to iterate through a java Hashmap and print out all the values for every key that is a part of the Hashmap?

Upvotes: 18

Views: 58294

Answers (7)

Lemmy_Caution
Lemmy_Caution

Reputation: 139

Keep it simple, please:

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

Upvotes: 1

Alex - GlassEditor.com
Alex - GlassEditor.com

Reputation: 15497

Java 8 added Map.forEach which you can use like this:

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

There's also replaceAll if you want to update the values:

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

Upvotes: 0

Fathah Rehman P
Fathah Rehman P

Reputation: 8741

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

Upvotes: 4

Esko
Esko

Reputation: 29367

With for-each loop, use Map.keySet() for iterating keys, Map.values() for iterating values and Map.entrySet() for iterating key/value pairs.

Note that all these are direct views to the map that was used to acquire them so any modification you make to any of the three or the map itself will reflect to all the others too.

Upvotes: 16

Jesper
Jesper

Reputation: 206796

Yes, you do this by getting the entrySet() of the map. For example:

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, replace String and Object with the types that your particular Map has - the code above is just an example).

Upvotes: 25

Jim Garrison
Jim Garrison

Reputation: 86764

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

In addition, if you use a LinkedHashMap as the implementation, you'll iterate in the order the key/value pairs were inserted. If that's not important, use a HashMap.

Upvotes: 2

Sanjay Manohar
Sanjay Manohar

Reputation: 7026

hashmap.keySet().iterator()

use a for loop to iterate it.

then use hashmap.get(item) to get individual values,

Alternatively just use entrySet() for getting an iterator for values.

Upvotes: 1

Related Questions