当前位置: 首页 > 面试题库 >

HashMap(key:String,value:ArrayList)返回一个Object而不是ArrayList?

邢雨华
2023-03-14
问题内容

我将数据存储在HashMap中(键:字符串,值:ArrayList)。我遇到问题的部分声明了一个新的ArrayList“当前”,在HashMap中搜索字符串“
dictCode”,如果找到,则将current设置为返回值ArrayList。

ArrayList current = new ArrayList();      
if(dictMap.containsKey(dictCode)) {
    current = dictMap.get(dictCode);   
}

“ current = …”行返回编译器错误:

Error: incompatible types
found   : java.lang.Object
required: java.util.ArrayList

我不明白… HashMap是否返回一个Object而不是我存储在其中的ArrayList作为值?如何将该对象转换为ArrayList?

谢谢。


问题答案:

在该范围内如何表达HashMap声明?它应该是:

HashMap<String, ArrayList> dictMap

如果不是,则假定为对象。

例如,如果您的代码是:

HashMap dictMap = new HashMap<String, ArrayList>();
...
ArrayList current = dictMap.get(dictCode);

那不管用。相反,您想要:

HashMap<String, ArrayList> dictMap = new HashMap<String, Arraylist>();
...
ArrayList current = dictMap.get(dictCode);

泛型的工作方式是类型信息对编译器可用,但在运行时不可用。这称为类型擦除。HashMap的实现(或任何其他泛型实现)正在处理Object。类型信息在编译期间用于类型安全检查。请参阅泛型文档。

还要注意,ArrayList它也被实现为通用类,因此您可能还需要在其中指定一个类型。假设您ArrayList的课程包含MyClass,则上面的行可能是:

HashMap<String, ArrayList<MyClass>> dictMap


 类似资料:
  • 所以我正在尝试制作一个程序,它将使用HashMap计算一个唯一单词出现在一个小文件中的次数。但是,当我尝试通过在我的HashMap上使用. get(key)来增加重复单词的计数时,它返回true而不是我想要转换为的整数值。如何让我的代码返回值而不是布尔值?这是我到目前为止的代码: 我的FindCommons类: 导入java。util。ArrayList;公共类FindCommons{ }

  • 问题内容: 这是我的图式 但是当我: 我得到了,虽然它应该返回 实际上,如果我去查询它,我会得到: 问题答案: 要使用嵌入式子文档(如)中命名的字段,您必须使用显式定义,否则Mongoose会感到困惑:

  • 问题内容: 为什么不: 代替: 获得唯一哈希码的更高机会? 问题答案: 因为数组的最大长度为。 由于的主要用途是确定将对象插入/ 的后备数组中的哪个插槽,因此hashcode> 将无法存储在该数组中。

  • 合同代码: 如何在API中调用函数: 的值不是对的有效查询吗? 可能我使用的函数是错误的,因为文档中提到函数返回stateQueryInterator。有人能帮助我在javascript中如何使用函数吗?谢谢

  • 本文向大家介绍Ajax中responseText返回的是一个页面而不是一个值,包括了Ajax中responseText返回的是一个页面而不是一个值的使用技巧和注意事项,需要的朋友参考一下 自己在struts2中的写好了业务逻辑用response返回的内容却是一个页面的! 然后就去了百度一下,说的是将struts2的返回值设为null(return null),这是因为struts2返回的是一个页面

  • 我正在查询URI以从web服务获取一些数据。那很好。但我注意到,我的json hase多页的page\u计数,但只返回第一页数据。 以下是json的样子: 如何返回所有页面而不是只返回第一页?我知道这可能不是个好主意,但我该怎么做? 更新:web服务的URI类似于: 谢谢