java.util.Hashset 中的 java.lang.ArrayStoreException

标签 java collections hashmap hashset

这是堆栈跟踪:

java.lang.ArrayStoreException
        at java.util.HashMap.transfer(Unknown Source)
        at java.util.HashMap.resize(Unknown Source)
        at java.util.HashMap.addEntry(Unknown Source)
        at java.util.HashMap.put(Unknown Source)
        at java.util.HashSet.add(Unknown Source)

一些观察:

  1. 这是一个间歇性问题
  2. JDK 1.6
  3. CentOS 5.3

据我所知,这个错误是间歇性的,我怀疑每当 HashSet(因此底层的 HashMap)需要调整自身大小时就会发生这种错误。但不确定为什么会出现此ArrayStoreException。现在我想知道的是

-什么情况下会出现此错误?

最佳答案

我的猜测是您正在尝试同时从多个线程更新该集合。 HashSetHashMap 并非设计为线程安全的 - 如果您要从多个线程访问您的集合,则应使用同步来防止并发访问。

当然,这只是一个猜测 - 如果没有看到您的代码,我无法判断您是否使用多个线程。不过,它会伴随着事物间歇性的一面......

关于java.util.Hashset 中的 java.lang.ArrayStoreException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7565137/

相关文章:

c++ - 稀疏插入的数据结构

java - 使用 docx4j 使用 Base64 图像从 HTML 生成 .docx

java - 我不断收到此程序错误。在编译器中获取日期后,错误提示,我不确定如何修复它。

java - getSubimage 给了我期望 null

Java Map实现渐进复杂度(HashMap、LinkedHashMap、TreeMap)

Java:如何对自定义类型 ArrayList 进行排序

java - 创建arraylist HashMap 的最佳方法

java - 正则表达式 - 查找文件中的所有字符串函数参数

java - 迭代Java8时更新列表中的元素

java - 使用 Map<Long,List<POJO>> 避免并发修改异常