Java 列表上的ConcurrentModificationException.equals()

Java 列表上的ConcurrentModificationException.equals(),java,exception,collections,Java,Exception,Collections,我有一个单线程程序和一个类Grid,它包含表对象的列表,其中表可以是列表或行。行对象是值的列表 我使用Eclipse默认值创建了hashCode()和equals()方法。在某些情况下,例如当我尝试将网格放入哈希映射中时,我会得到: java.util.ConcurrentModificationException at java.util.ArrayList$SubList.checkForComodification(ArrayList.java:1231) at java.util.Arr

我有一个单线程程序和一个类
Grid
,它包含
对象的
列表
,其中
可以是列表或
对象是
值的
列表

我使用Eclipse默认值创建了
hashCode()
equals()
方法。在某些情况下,例如当我尝试将
网格
放入
哈希映射
中时,我会得到:

java.util.ConcurrentModificationException
at java.util.ArrayList$SubList.checkForComodification(ArrayList.java:1231)
at java.util.ArrayList$SubList.listIterator(ArrayList.java:1091)
at java.util.AbstractList.listIterator(AbstractList.java:299)
at java.util.AbstractList.equals(AbstractList.java:519)
at com.informatica.atlantic.grid.Sheet$Row.equals(Sheet.java:174)
at java.util.AbstractList.equals(AbstractList.java:523)
at com.informatica.atlantic.grid.Sheet.equals(Sheet.java:459)
at java.util.AbstractList.equals(AbstractList.java:523)
at com.informatica.atlantic.common.utils.AList.equals(AList.java:55)
at com.informatica.atlantic.grid.Grid.equals(Grid.java:152)
at com.informatica.atlantic.grid.GridData.equals(GridData.java:76)
at java.util.HashMap.getNode(HashMap.java:571)
at java.util.HashMap.get(HashMap.java:556)
我没有使用iterator.remove()
或类似的工具。但是,我确实有一些列表,它们实际上是其他
列表的子列表
,并且在一些
网格
对象之间共享

因此:

  • 会发生什么?当我以只读方式迭代时,没有任何线程,为什么会出现问题
  • 如何开始调试它

  • 你为什么不发布你的代码呢?尽管你否认了,但这个错误意味着你试图在遍历其中一个列表的同时修改它。检查是否有包在使用迭代器。无需使用
    remove()
    即可获得
    ConcurrentModificationException
    。请参见此处:@passion-我的代码分布在几十个文件中。为什么不发布您的代码呢?尽管您否认,但此错误意味着您在迭代某个列表的同时试图修改它。请检查是否有包正在使用迭代器。无需使用
    remove()
    即可获得
    ConcurrentModificationException
    。请看这里:@passion-我的代码分布在几十个文件中。