Java Hashmap Put in an Enhanced for Loop Just Like an Arraylist

Java Hashmap Put in an Enhanced for Loop Just Like an Arraylist

For example, I can loop an ArrayList like this

for (String temp : arraylist)

Can I loop a HashMap by using the similar method?

2

6 Answers

You can iterate over the keys, entries or values.

for (String key : map.keySet()) {
    String value = map.get(key);
}

for (String value : map.values()) {
}

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

This is assuming your map has String keys and String values.

1

You can't directly loop a Map like that in Java.

You can, however, loop the keys:

for (SomeKeyObject key : map.keySet())

The values:

for (SomeValueObject value : map.values())

Or even its entries:

for (Map.Entry<SomeKeyObject, SomeValueObject> entry : map.entrySet())

you can do

for (String key : hashmap.keySet()) {
    String value = hashmap.get(key);
}

You can do it by using an Iterator .

    HashMap<String, String> yourHashMap = new HashMap<>();
    Iterator<Map.Entry<String, String>> it = yourHashMap.entrySet().iterator();
    while(it.hasNext()){
        it.next();
        System.out.println(yourHashMap.get(it));
    }

At first sight it might be tempting to use a for-loop instead of an Iterator, but

you will need an Iterator if you want to modify the elements in your HashMap while iterating over them!

When using a for-loop you cannot remove elements from your map while

 it.remove()

would work well in the above example.

public class IterableHashMap<T,U> extends HashMap implements Iterable
    {

        @Override
        public Iterator iterator() {
            // TODO Auto-generated method stub

            return this.keySet().iterator();
        }



    }



    public static void main(String[] args) {

        testA a=new testA();
        IterableHashMap test=a.new IterableHashMap<Object,Object>();
        for(Object o:test)
        {

        }
    }

Use this

map.forEach((k, v) -> System.out.printf("%s %s%n", k, v));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Robert Thorne
Author

Robert Thorne

Robert Thorne covers electric vehicle innovations, autonomous driving systems, global mobility trends, and automotive engineering developments.