Printing HashMap In Java

Unknown user picture Unknown user · May 7, 2011 · Viewed 451.3k times · Source

I have a HashMap:

private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>();

Now I would like to run through all the values and print them.

I wrote this:

for (TypeValue name : this.example.keySet()) {
    System.out.println(name);
}

It doesn't seem to work.

What is the problem?

EDIT: Another question: Is this collection zero based? I mean if it has 1 key and value will the size be 0 or 1?

Answer

Ken Chan picture Ken Chan · May 7, 2011

keySet() only returns a set of keys from your hashmap, you should iterate this key set and the get the value from the hashmap using these keys.

In your example, the type of the hashmap's key is TypeKey, but you specified TypeValue in your generic for-loop, so it cannot be compiled. You should change it to :

for (TypeKey name: example.keySet()){
            String key = name.toString();
            String value = example.get(name).toString();  
            System.out.println(key + " " + value);  
} 

Update for Java8:

 example.entrySet().forEach(entry->{
    System.out.println(entry.getKey() + " " + entry.getValue());  
 });

If you don't require to print key value and just need the hashmap value, you can use others' suggestions.

Another question: Is this collection is zero base? I mean if it has 1 key and value will it size be 0 or 1?

The collection returned from keySet() is a Set.You cannot get the value from a Set using an index, so it is not a question of whether it is zero-based or one-based. If your hashmap has one key, the keySet() returned will have one entry inside, and its size will be 1.