在您看到另一个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循环拆分为一个while循环和一个单独的初始化步骤来重写它,所以我不是在寻找仅仅为了让它工作而进行重写。但是如果可能的话,我更愿意使用for-each语法。但我想知道这里显示的方式有什么问题。