首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HashMap#entrySet抛出ArrayStoreException

HashMap#entrySet抛出ArrayStoreException
EN

Stack Overflow用户
提问于 2016-08-22 15:31:55
回答 2查看 89关注 0票数 1
代码语言:javascript
复制
// channels is a HashMap<String,Channel>
for (Channel channel : channels.entrySet().toArray(new Channel[channels.entrySet().size()])) {
    // stuff
}

抛出ArrayStoreException。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-22 15:33:35

entrySet()返回一个Set<Map.Entry<K,V>>,因此您不能从它生成Channel数组。

实际上,您不需要创建一个数组来迭代Channel值。只需使用values()

代码语言:javascript
复制
for (Channel channel : channels.values()) {
    // stuff
}
票数 3
EN

Stack Overflow用户

发布于 2016-08-22 16:06:57

你检查过ArrayStoreException的文档了吗?它显示“抛出以指示已尝试将错误类型的对象存储到对象数组中。”因此,最明显的(可能是:-)猜测是toArray()试图在Channel数组中存储一些不是Channel的内容。这是有意义的,因为条目集不是由Channel对象组成,而是由Map.Entry<String,Channel>组成。这些是不一样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39073653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档