3

我想遍历 'character' HashMap 并使用诸如 for each 循环之类的东西来获取所有 'Stat' 对象。例如,我想创建一个名为“showStats”的函数。为此,我希望能够输出“字符”HashMap 中包含的所有“统计”对象。有谁知道如何做到这一点?

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"));
4

3 回答 3

4

使用values集合

for(GameObject gameObject : character.values()) { 
    if(gameObject instanceof Stat) { }
}
于 2013-07-24T02:16:46.910 回答
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

希望有帮助。

于 2013-07-24T02:20:22.803 回答
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)
    }
}    
于 2013-07-24T02:21:04.327 回答