在class A中,我想遍历class B中的一个HashMap的keySet

In class A, I want to go throught the keySet of a HashMap in class B

我想遍历另一个 class 的 HashMap 的 keySet 中的每个键。 现在这就是我所拥有的:

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;
    }


}

我想我不能这样做,因为我无法在未存储在同一 class 中的 HashMap 上使用 HashMap 命令。

还有其他方法可以使用吗?我从 Admin.java 调用错了吗?

谢谢!

由于它是静态的并且 public ,您可以在项目的任何地方使用它。只写

Admin.person

前任

public class Person {

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

        }
   }

您的 getHashMap 方法 return 是您 Person class 中的原始 HashMap

原始地图未进行参数化,因此其键的类型隐式为 Object

您需要将其更改为:

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

...以便能够将键引用为 String

编辑

您还需要将 book 变量更改为实例(而不是 static),或者将 getHashMap 方法设为静态。

可能建议不要使用后者,因为它会 return 所有 Person 实例的同一个对象。