列表中的java ConcurrentModificationException。等于
我有一个单线程程序和一个类Grid
,它包含List
个Sheet
对象,其中Sheet
可以是列表或Row
。Row
对象是Value
的List
我使用Eclipse默认值创建了hashCode()
和equals()
方法。在某些情况下,比如当我试图把一个Grid
放在一个HashMap
中时,我得到:
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()
或类似的东西。然而,我确实有一些列表,它们实际上是其他List
的子列表,并且在一些Grid
对象之间共享
所以:
- 会发生什么?当我以只读方式迭代时,没有任何线程,为什么会出现问题李>
- 如何开始调试它李>
共 (0) 个答案