gpt4 book ai didi

java - HashMap(键 : String, 值 : ArrayList) returns an Object instead of ArrayList?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:17 25 4
gpt4 key购买 nike

我使用(键:字符串,值:ArrayList)将数据存储在 HashMap 中。我遇到问题的部分声明了一个新的 ArrayList“current”,在 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 返回一个对象而不是我存储在其中的 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(或任何其他泛型实现)的实现正在处理对象。类型信息用于编译时的类型安全检查。查看Generics documentation .

另请注意 ArrayList也作为通用类实现,因此您可能还想在那里指定一个类型。假设您的 ArrayList 包含您的类 MyClass,上面的行可能是:

HashMap<String, ArrayList<MyClass>> dictMap

关于java - HashMap(键 : String, 值 : ArrayList) returns an Object instead of ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/960807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com