在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
实例的同一个对象。
我想遍历另一个 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
实例的同一个对象。