在foreach循环中,对元素进行 remove()/add() 操作需要使用Iterator ,如果运行在多线程环境下,需要对Iterator对象枷锁。
public class ForeachTest {
public static void main(String[] args){
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
for (String temp : a) {
if("2".equals(temp)){
a.remove(temp);
}
}
System.out.println(a);
}
}
此方法执行报错信息如下:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
at java.util.ArrayList$Itr.next(ArrayList.java:831)
at sysman_service_intf.ForeachTest.main(ForeachTest.java:28)
从错误信息能够看出异常出现在checkForComodification()方法中。
下面我们分析异常出现的原因: