62

How to I print information from a map that has the object as the value?

I have created the following map:

Map<String, Object> objectSet = new HashMap<>();

The object has its own class with its own instance variables

I have already populated the above map with data.

I have created a printMap method, but I can only seem to print the Keys of the map

How to do I get the map to print the <Object> values using a for each loop?

So far, I've got:

for (String keys : objectSet.keySet())
{
   System.out.println(keys);
}

The above prints out the keys. I want to be able to print out the object variables too.

T D Nguyen
  • 7,054
  • 4
  • 51
  • 71
Gandolf
  • 637
  • 1
  • 5
  • 6

3 Answers3

133

I'm sure there's some nice library that does this sort of thing already for you... But to just stick with the approach you're already going with, Map#entrySet gives you a combined Object with the key and the value. So something like:

for (Map.Entry<String, Object> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ":" + entry.getValue().toString());
}

will do what you're after.


If you're using java 8, there's also the new streaming approach.

map.forEach((key, value) -> System.out.println(key + ":" + value));
BeUndead
  • 3,463
  • 2
  • 17
  • 21
11

You may use Map.entrySet() method:

for (Map.Entry entry : objectSet.entrySet())
{
    System.out.println("key: " + entry.getKey() + "; value: " + entry.getValue());
}
Andrej Istomin
  • 2,527
  • 2
  • 15
  • 22
3

There is a get method in HashMap:

for (String keys : objectSet.keySet())  
{
   System.out.println(keys + ":"+ objectSet.get(keys));
}
randominstanceOfLivingThing
  • 16,873
  • 13
  • 49
  • 72
  • I'd be careful when using this approach for time-sensitive applications because internally get method is [linearly searching O(n)](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/HashMap.java#HashMap.getNode%28int%2Cjava.lang.Object%29) for the corresponding value. – Quazi Irfan Jan 02 '18 at 23:56
  • 2
    The get method internally makes a call to getNode(hash(key), key) which uses hashing. It does a linear search only when there is a hash collision. – randominstanceOfLivingThing Jan 03 '18 at 02:51