一、问题描述
按我的需求,我想要的是删除集合list种所有的“3”,但是结果不尽人意,执行后报了一个名为ConcurrentModificationException的异常,这也就是我们在进行可变数组元素删除时可能会经常碰到的一个问题,这就是并发修改异常。接下来我们详细介绍foreach循环的底层原理以及异常出现的原因。
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(3);
System.out.println(list);
for (Integer a : list) {
if(a == 3) {
list.remove(Integer.valueOf("3"));
}
}
System.out.println(list);
运行结果:
二、foreach循环遍历集合底层原理
foreach本质上不过是编译器提供的“