29.2 Iterator 迭代器ConcurrentModificationException:并发修改异常处理
/*
* Iterator:迭代器
*
* 需求:判断集合中是否包含元素java,如果有则添加元素android
* Exception in thread "main" java.util.ConcurrentModificationException:并发修改异常
* 迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合不一样,则抛出异常
*
* 解决方案:
* 在使用迭代器进行遍历的时候使用迭代器来进行修改
* */
public class IteratorDemo2 { public static void main(String[] args) { // method(); // concurrentModificationExceptionMethod(); method2(); } private static void method2() { //创建集合对象 // Collection c = new ArrayList(); List c = new ArrayList(); //添加元素 c.add("hello"); c.add("world"); c.add("java"); //通过遍历获取集合中的元素,判断集合中是否包含元素java //使用迭代器添加元素 // Iterator it = c.iterator(); ListIterator it = c.listIterator(); while (it.hasNext()) { if(it.next().equals("java")) { // it.add //Iterator没有add方法,使用其子类方法。List.listIterator it.add("android"); } } System.out.println(c); } private static void concurrentModificationExceptionMethod() { //创建集合对象 Collection c = new ArrayList(); //添加元素 c.add("hello"); c.add("world"); c.add("java"); //通过遍历获取集合中的元素,判断集合中是否包含元素java Iterator it = c.iterator(); while (it.hasNext()) { if(it.next().equals("java")) { //使用集合添加元素 c.add("android"); } } } private static void method() { //创建集合对象 Collection c = new ArrayList(); //添加元素 c.add("hello"); c.add("world"); c.add("java"); //判断集合中是否包含元素java if(c.contains("java")) { c.add("android"); } System.out.println(c); } }
输出