list集合在用iterator迭代时,修改集合长度, 不一定会引发异常

来源:互联网 发布:mysql字段约束 编辑:程序博客网 时间:2024/06/08 17:15
import java.util.ArrayList;import java.util.List;public class IteratorTest{public static void main(String[] args){/* * list集合在用iterator迭代时,修改集合长度, 不一定会引发 * ConcurrentModificationException * 迭代器并发修改异常 */List<String> list = new ArrayList<String>();list.add("aa");list.add("bb");list.add("cc");list.add("dd");list.add("ee");/* * list中有一个成员变量:modCount:这个机构被修改的次数 * 迭代器内部:有个一变量:excepedModCount:被期望的修改次数 * 当集合在修改元素时:modCount++; * 当迭代器next()时,会判断excepedModCount和modCount是否相等,不等会 * 引发异常 * chenckForComodification() */for (String string : list){if("aa".equals(string))//list的长度从5->4 迭代器的hasNext()==false, 不会执行next()//所以不会引发异常list.remove("bb");System.out.println(string);}}}

0 0