【问题标题】:Return object from HashMap using Iterator使用迭代器从 HashMap 返回对象
【发布时间】:2015-06-22 22:02:36
【问题描述】:

roomCharacters 是键和值的 HashMapString 键和 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

显然我误解了某些内容或错过了一步。请告知并解释我哪里出错了。

【问题讨论】:

    标签: java object iterator hashmap


    【解决方案1】:

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

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

    【讨论】:

    • @AK83 如果回答有帮助请按绿色复选标记。
    【解决方案2】:

    您在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();
        }        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多