详解:

  1. 快速失败:Java中Iterator(迭代器)实现原理 - wss96 - 博客园
  2. 迭代器使用:JAVA集合:迭代器实现原理_开始写bug~~~-CSDN博客_java迭代器原理
  3. 综合:Java ConcurrentModificationException异常原因和解决方法 - Matrix海子 - 博客园

报错:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
    at java.util.ArrayList$Itr.next(ArrayList.java:859)
    at com.ruyi.base.BaseController.BaseJava.main(BaseJava.java:26)

场景:

public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);for (Integer num : list) {if(num == 1){list.remove(num);}}for (Integer i:list) {System.out.println(i);}
}

修正:

public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);Iterator<Integer> iterator = list.iterator();while (iterator.hasNext()){Integer next = iterator.next();if(2==next){iterator.remove();}}for (Integer i:list) {System.out.println(i);}
}

结果:

1
3
4
5

理解:

不可对当前循环中的父结构进行操作(增删)


迭代器的使用流程是:

  1. 通过hasNext判断边界,是否可以继续迭代
  2. 通过next() 方法返回指针指向的对象
  3. remove()方法移除指针指向的对象,remove之前必须先执行过next()

ConcurrentModificationException 及 快速失败(fail-fast)相关推荐

  1. Java - Java集合中的快速失败Fail Fast 机制

    文章目录 什么是 fail-fast 源码解读 Itr 为什么对集合的结构进行修改会发生并发修改异常-源码分析 修改方法之 remove 修改方法之 add 案例分享 [案例一] [案例二] [案例三 ...

  2. fail safe java_Java中快速失败(fail-fast)和安全失败(fail-safe)的区别?

    快速失败(fail-fast): 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exception ...

  3. Java - Java集合中的安全失败Fail Safe机制 (CopyOnWriteArrayList)

    文章目录 Pre 概述 fail-safe的容器-CopyOnWriteArrayList add remove函数 例子 缺陷 使用场景 Pre Java - Java集合中的快速失败Fail Fa ...

  4. fail-fast(快速失败/报错机制)-ConcurrentModificationException

    2019独角兽企业重金招聘Python工程师标准>>> 一.fail-fast机制(快速报错机制) 这是<Java编程思想>中关于快速报错机制的描述 Java容器有一种保 ...

  5. java.util.ConcurrentModificationException: null异常(已解决,原因出自于Java集合的快速失败机制)

    问题来源 今天我在写项目时,对集合中的元素做了以下操作 报错信息如图 问题来源: 在Java中对集合进行遍历时,一旦对集合进行增删操作,在遍历时会引起java.util.ConcurrentModif ...

  6. 什么是Fail Fast和Fail Safe?

    这里是目录标题 1. Fail Fast a. 概念 b. 原理 c. 关注点 d. 注意 2. Fail Safe a. 概念 b. 原理 3. Fail Fast 和 Fail Safe的区别 1 ...

  7. 咱们来聊聊快速失败和安全失败

    一:快速失败(fail-fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...

  8. 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

    一:快速失败(fail-fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...

  9. 快速失败Vs安全失败(Java迭代器附示例)

    译者:java达人-卍极客 英文出处:Java Concept Of The Day 英文链接:http://javaconceptoftheday.com/(点击文末阅读原文前往) 转载请标注以上声 ...

最新文章

  1. MBR与GPT分区格式(实例-创建大于2TB的分区)
  2. NYOJ 5177 疯牛(最大化最小值 二分搜索)
  3. 单片机脉宽测量C语言,单片机脉宽测量的程序
  4. 线程间通信之eventfd
  5. JS-函数(调用返回值)-形参实参-作用域
  6. 轻松理解条件随机场(CRF)
  7. 颠覆游戏开发,虚幻引擎 UE5 正式发布
  8. 博客目录 Blog directory
  9. 利用网络媒体搭建自己就业之“桥”——卖糖葫芦北大毕业生谋职报道带来的启示...
  10. node中封装MongoDB
  11. 数学建模系列--灰色关联分析
  12. java鼠标监听事件_Java鼠标事件监听器的创建和使用教程及代码
  13. java 美元符号_使用单个美元符号“$”作为java类名称的任何风险?
  14. ant design vue 描述列表Descriptions数据绑定
  15. beyong经典之作
  16. ArcGIS校园3D展示图制作详细教程
  17. 第十一章 Caché 函数大全 $DATA 函数
  18. 加班者的王者语录(改编)
  19. uniapp 微信小程序实现路线规划导航
  20. 数据完整性、存储过程、函数

热门文章

  1. # 健康饮食-20211217
  2. NVIDIA各型号显卡算力、CUDA、CUDNN、驱动对应版本归纳
  3. 解决Finetune时 Aborted at 1493299396 (unix time) try date -d if you are using GNU date
  4. 2016.3.5 开放世界游戏进化史
  5. 【附源码】Java计算机毕业设计网上零食商城(程序+LW+部署)
  6. MongoDB文档存储
  7. 苹果6信号总是无服务器,苹果6信号不好怎么解决的方法介绍【图文】
  8. 栅格矢量化_绘科普 | 栅格网格的几何校正
  9. 【深度学习 理论】Convolutional Neural Network
  10. php密钥dse破解,88CD求个php混淆解密工具!