List遍历,边查询边删除

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

1.在对集合遍历时边查询边执行添加或删除操作会报错:java.util.ConcurrentModificationException,原因是集合引用和迭代器引用在同时操作元素,通过集合获取到对应的迭代器后,在迭代中,进行集合引用的元素添加,迭代器并不知道,所以会出现异常情况

ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(2);
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            Integer integer = iterator.next();
            if (integer == 2)
            //报错位置:使用集合引用删除会报错
                list.remove(integer);
        }
        System.out.println(list);
        System.out.println(iterator);

正确的写法为:

ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(2);
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            Integer integer = iterator.next();
            if (integer == 2)
                iterator.remove();
        }
        System.out.println(list);
        System.out.println(iterator);
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页