我想遍历'character'HashMap并使用类似于每个循环的东西来抓取所有'Stat'对象。例如,我想创建一个名为'showStats'的函数。为此,我希望能够输出“字符”HashMap中包含的所有“stat”对象。有谁知道怎么做?
HashMap<String, GameObject> character = new HashMap<String, GameObject>;
character.put("Health", new Stat("Health",10));
character.put("Accuracy", new Stat("Accuracy",10));
character.put("Strength", new Stat("Strength",10));
character.put("Coins",new Item("Coins","Your Money"));
character.put("Head",new BodyPart("Head"));
答案 0 :(得分:4)
使用values
集合
for(GameObject gameObject : character.values()) {
if(gameObject instanceof Stat) { }
}
答案 1 :(得分:1)
您可以使用values()
接口中的Map
方法仅迭代值,或者您也可以使用entrySet()
方法迭代每个Map条目:
for (Map.Entry<String, GameObject> entry : character.entrySet()) {
String key = entry.getKey();
GameObject gameObject = entry.getValue();
// do something with key or gameObject here...
}
此处Map
界面的更多信息:
http://docs.oracle.com/javase/7/docs/api/java/util/Map.html
希望有所帮助。
答案 2 :(得分:1)
如果您需要访问角色名称(或任何密钥),您可以这样做:
for (String s : characters.keySet()) {
GameObject go = characters.get(s);
if (go instanceof Stat) {
System.out.println("Character name: " + s);
System.out.println("Stats: " + go)
}
}