江户川乱折腾
理论上来说,这种情况会引发异常java.util.ConcurrentModificationException 异常,但是注意有个例外, 就是删除的是倒数第二个元素时, 不会抛出该异常. 1234567891011121314151617181920import java.util.ArrayList;public class Demo { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); list.add("E"); for (String temp : list) { if ("D".equals(temp)) { //除了倒数第二个元素 "D" ,删除其余的元素都会抛出异常 list.remove(temp); } } System.out.println(list); }}具体原因可以查看ArrayList等源码, 里面的源代码写了什么情况下会抛出ConcurrentModificationException 异常.比如HashMap 在只有一个元素的时候, 边循环边删除也不抛出异常, 但是特殊的例子, 没必要记.!!因为写代码的时候 要尽量避免 一边增强for循环遍历一边增删修改集合