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);
}
}
}
list集合在用iterator迭代时,修改集合长度, 不一定会引发异常
最新推荐文章于 2024-04-11 15:25:45 发布