0

I want to go through each key in a keySet of a HashMap from another class. Right now this is what I have:

Admin.java

import java.util.HashMap

public class Admin {
public static HashMap<String, Person> person = new HashMap<String, Person>();

    public static void main (String [] args) {
         for (String key: person.get("James").getHashMap().keySet()) {
         System.out.println(key);
    }

}

Person.java

import java.util.HashMap

public class Person {
public static HashMap<String, Book> book = new HashMap<String, Book>();
private static String title = "";


    public Book (String titleIn) {
         title = titleIn;
    }

    public HashMap getHashMap(){
         return book;
    }


}

I think I can't do this beacause I am unable to use HashMap commands on a HashMap that isn't stored in the same class.

Is there another method I could use? Am I calling it wrong from Admin.java?

Thanks!

Jalokoh
  • 49
  • 7

2 Answers2

0

Since it is static and public , you are allowed use it from anywhere of your project. Just write

Admin.person

For ex

public class Person {

...
....
        public void print() {
         for (String key: Admin.person.get("James").getHashMap().keySet()) {
                 System.out.println(key);
            }

        }
   }
Suresh Atta
  • 120,458
  • 37
  • 198
  • 307
0

Your getHashMap method returns a raw HashMap in your Person class.

Raw maps are not parametrized, so the type for their key is Object implicitly.

You need to change it to:

public Map<String, Book> getHashMap(){
   return book;
}

... in order to be able to reference a key as String.

Edit

You also need to either change the book variable to instance (as opposed to static), or make the getHashMap method static.

The latter is probably advised against, as it would return the same object for all your Person instances.

Mena
  • 47,782
  • 11
  • 87
  • 106