迭代器和集合引用数据冲突问题
class Panda{
public static void main(String[] args) {
//使用迭代器操作集合
Collection<String> list = new ArrayList<>();
list.add("小哈");
list.add("小金");
list.add("小花");
list.add("小黄");
list.add("小撒");
list.add("1235");
list.add("99556455");
System.out.println("原始list:"+list);
Iterator<String> iterator = list.iterator();
//【问题】当你使用迭代器操作一个集合的时候,如果这个时候突然使用对象操作集合,会发生什么?
//例如:如果此时迭代器在展示一个元素,对象在迭代器展示之前进行了删除;且没有告知迭代器;
//因为集合对象是共享资源,迭代器可以操作,对象也可以直接进行操作;
//此时迭代器并不知到对象也在操作;此时属于多线程同时进行操作;
//报异常:ConcurrentModificationException 并发修改异常!!!!!
while(iterator.hasNext()){
//next() 方法 获取迭代器当前指向的元素并将迭代器指向下一个元素
//获取每一个元素并进行展示
String next = iterator.next();
System.out.println(next);
list.remove("1235");
}
}
}