0

我想通过另一个类的 HashMap 的 keySet 中的每个键。现在这就是我所拥有的:

管理员.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);
    }

}

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


}

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

我可以使用另一种方法吗?我是否从 Admin.java 中调用它错误?

谢谢!

4

2 回答 2

0

由于它是 static 和 public ,因此您可以在项目的任何地方使用它。写吧

Admin.person

例如

public class Person {

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

        }
   }
于 2015-10-30T12:11:00.763 回答
0

你的方法在你的类中getHashMap返回一个 raw 。HashMapPerson

原始地图没有参数化,因此它们的键的类型是Object隐式的。

您需要将其更改为:

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

...为了能够将密钥引用为String.

编辑

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

可能建议不要使用后者,因为它会为您的所有Person实例返回相同的对象。

于 2015-10-30T12:14:18.117 回答