Java 在类A中,我想遍历类B中HashMap的键集

Java 在类A中,我想遍历类B中HashMap的键集,java,methods,hashmap,keyset,Java,Methods,Hashmap,Keyset,我想检查另一个类的HashMap键集中的每个键。 这就是我现在所拥有的: Admin.java Person.java 我想我做不到这一点,因为我无法在不存储在同一个类中的HashMap上使用HashMap命令 还有别的方法可以用吗?我在Admin.java中将其称为错误吗 谢谢 因为它是静态的和公共的,所以您可以从项目的任何地方使用它。只要写 Admin.person 前 public class Person { ... .... public void print()

我想检查另一个类的HashMap键集中的每个键。 这就是我现在所拥有的:

Admin.java

Person.java

我想我做不到这一点,因为我无法在不存储在同一个类中的HashMap上使用HashMap命令

还有别的方法可以用吗?我在Admin.java中将其称为错误吗


谢谢

因为它是静态的和公共的,所以您可以从项目的任何地方使用它。只要写

Admin.person

public class Person {

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

        }
   }
getHashMap方法返回Person类中的原始HashMap

原始映射未参数化,因此其键的类型隐式为Object

您需要将其更改为:

public Map<String, Book> getHashMap(){
   return book;
}
。。。以便能够将键引用为字符串

编辑

您还需要将book变量更改为instance而不是static,或者将getHashMap方法设置为static


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

您不认为按照编程实践使用getter方法访问此字段会更好吗?@VivekSingh对静态的封装?不。我更喜欢管理员这个人工作!谢谢我刚刚不得不将Map改为HashMap,这两者之间有什么区别吗,或者Map只是HashMap的一个较短名称吗?@Jalokoh-Map是HashMap实现的接口。将部分代码转换为接口原则。顺便说一句,如果您导入地图,您应该能够返回它。啊,好的,是的,那会!再次感谢!
public class Person {

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

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