使用Iterator从HashMap返回对象

时间:2015-06-22 22:02:37

标签: java object iterator hashmap

roomCharactersHashMap个键和值(String键和Character个对象)。

我需要从集合中返回一个角色。在调用方法时,我使用Iterator简单地返回它找到的第一个Character。

public Character getCharacter()
{
    Iterator<HashMap.Entry<String, Character>> it = roomCharacters.entrySet().iterator();
    if (it.hasNext())
    {
        HashMap.Entry pair = (Map.Entry)it.next();
        return pair.getValue();
    }        
}

但它无法编译:

  incompatible types: java.lang.Object cannot be converted to Character

显然,我误解了某些事情或者错过了一步。请告知并解释我出错的地方。

2 个答案:

答案 0 :(得分:2)

如果你使用正确的类型参数声明你的pair变量,它将起作用,你可以摆脱额外的演员阵容:

    HashMap.Entry<String,Character> pair = it.next();

答案 1 :(得分:1)

您缺少pair定义中的泛型规范。此外,由于it是使用泛型指定的,因此请注意,在将next分配给pair时,您不需要进行投射:

public Character getCharacter()
{
    Iterator<HashMap.Entry<String, Character>> it = roomCharacters.entrySet().iterator();
    if (it.hasNext())
    {
        HashMap.Entry<String, Character> pair = it.next();
        return pair.getValue();
    }        
}