zoukankan      html  css  js  c++  java
  • 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);
        }
    }

    输出

  • 相关阅读:
    PHP中获取当前页面的URL信息
    $_POST和$GLOBALS['HTTP_RAW_POST_DATA'] 的区别
    curl模拟ip和来源进行网站采集的实现方法
    mysql修改root密码的几种方法
    微信小程序实现支付功能
    git获取远程服务器的指定分支
    mysql函数技巧整理
    sql 查询目标数据库中所有的表以其关键信息
    SET NOCOUNT ON
    C# CultureInfo中常用的InvariantCulture
  • 原文地址:https://www.cnblogs.com/longesang/p/11264344.html
Copyright © 2011-2022 走看看