Search code examples
javadictionaryhashmappojo

How can I iterate over a map of <String, POJO>?


I've got a Map<String, Person> (actually I'm using a more complex POJO but simplifying it for the sake of my question)

Person looks like :

class Person
{
  String name;
  Integer age;

  //accessors
}

How can I iterate through this map, printing out the key, then the person name, then the person age such as :

System.out.println(String.format("Key : %s Name : %s Age : %s", a, b, c));
  • A being the key from Map<String, Person>
  • B being the name from Person.getName()
  • C being the age from Person.getAge()

I can pull all of the values from the map using .values() as detailed in the HashMap docs, but I'm a bit unsure of how I can get the keys


Solution

  • What about entrySet()

    HashMap<String, Person> hm = new HashMap<String, Person>();
    
    hm.put("A", new Person("p1"));
    hm.put("B", new Person("p2"));
    hm.put("C", new Person("p3"));
    hm.put("D", new Person("p4"));
    hm.put("E", new Person("p5"));
    
    Set<Map.Entry<String, Person>> set = hm.entrySet();
    
    for (Map.Entry<String, Person> me : set) {
      System.out.println("Key :"+me.getKey() +" Name : "+ me.getValue().getName()+"Age :"+me.getValue().getAge());
    
    }