在您關注另一個ConcurrentModificationException問題之前,您並不是您典型的ConcurrentModificationException問題。不修改列表,但仍然得到一個ConcurrentModificationException問題
我理解ConcurrentModificationExceptions,但我不明白爲什麼我在下面的代碼中得到一個。在下面的'for'中,似乎迭代器繼續在for循環之外生存。 (使用Eclipse中的調試器,我可以看到迭代器保持它的jList的modCount的價值被重新循環的時候。)
public class ForEachTest {
public static void main(String[] args) {
List<Integer> zList = new LinkedList<Integer>();
List<Integer> jList = new LinkedList<Integer>();
jList.add(1);
while (true) {
for (Integer j : jList) {
zList.add(17);
System.out.println(j);
}
jList = zList;
}
}
}
起初我以爲這可能是語法糖的問題,但我重寫它使用顯式迭代器並運行到相同的行爲。
最後,我能夠通過將單獨的初始化步驟拆分爲一段時間來重寫它,所以我不想僅僅爲了得到它而重寫。但我想知道這裏顯示的方式有什麼問題。如果可能,我寧願使用for-each語法。
請注意,我的答案解釋了爲什麼會發生這種情況(它*基本上是您典型的ConcurrentModificationException問題) - 但您沒有解釋您要做什麼,所以我一直無法提供替代方案。 – 2010-09-10 16:34:46