为什么在这里引发java.util.ConcurrentModificationException?
问题描述:
此异常上升为什么在这里引发java.util.ConcurrentModificationException?
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at noob.Prim_up_to.prim(Prim_up_to.java:72)
at noob.Prim_up_to.<init>(Prim_up_to.java:21)
at _ex.main(_ex.java:11)
下面是相关代码:http://pastebin.com/w6d0hyXb
为什么出现这种情况?我尝试使用迭代器,但无济于事。然而,同样的例外显示。
答
当您在迭代它时修改(在本例中)ArrayList时,会引发此异常。如果您必须在迭代过程中修改ArrayList,请考虑使用ListIterator
,它有一个add
和remove
方法。
这不是一个完全重复的!由于将列表分配给另一个列表,问题稍微复杂一些。 即: 这是不容易被发现,但在你的代码某些时候你进行分配'SS = NSS;' 但你'为loop'你打电话'nss.add(新的整数(NPP-lrpp内));', 所以'ss = nss'你确实在修改集合的同时迭代它! 尝试使用迭代器或深层副本'nss'到'ss' –