publicclassArrayListForEachRemoveTest { publicstaticvoidmain(String[] args) { ArrayList<Integer> list = newArrayList<>();
for (inti=0; i < 10; i++) { list.add(i); } // 第40行 for (Integer integer : list) { list.remove(1); } } }
当我准备编译的时候idea已经建议 不要在遍历中使用【list.remove】
二、执行代码&处理结果
不出意料的抛了一个异常。
1 2 3 4
Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911) at java.util.ArrayList$Itr.next(ArrayList.java:861) at com.github.test.ArrayListForEachRemoveTest.main(ArrayListForEachRemoveTest.java:40)
intnumMoved= size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // clear to let GC do its work