| 
 
| 迭代器的并发修改异常 
 迭代器的并发修改异常
 
 迭代器的并发修改异常 java.util.ConcurrentModificationException
 就是在遍历的过程中,使用了集合方法(add,remove,clear)修改了集合的长度,不允许的
 /*
 *  迭代器的并发修改异常 java.util.ConcurrentModificationException
 *  就是在遍历的过程中,使用了集合方法修改了集合的长度,不允许的
 */
 public class ListDemo1 {
 public static void main(String[] args) {
 List<String> list = new ArrayList<String>();
 list.add("abc1");
 list.add("abc2");
 list.add("abc3");
 list.add("abc4");
 
 //对集合使用迭代器进行获取,获取时候判断集合中是否存在 "abc3"对象
 //如果有,添加一个元素 "ABC3"
 Iterator<String> it = list.iterator();
 while(it.hasNext()){
 String s = it.next();
 //对获取出的元素s,进行判断,是不是有"abc3"
 if(s.equals("abc3")){
 list.add("ABC3");
 }
 System.out.println(s);
 }
 }
 }
 
 运行上述代码发生了错误 java.util.ConcurrentModificationException这是什么原因呢?
 在迭代过程中,使用了集合的方法对元素进行操作。
 导致迭代器并不知道集合中的变化,容易引发数据的不确定性。
 
 并发修改异常解决办法:
 在迭代时,不要使用集合的方法操作元素。
 或者通过ListIterator迭代器操作元素是可以的,ListIterator的出现,解决了使用Iterator迭代过程中可能会发生的错误情况。
 | 
 |