今日在写一个功能时,需要从MQ拿取数据集合调用对端系统进行批量处理,为了幂等支持,在循环内部如果不满足调用条件就直接从集合中移除。

以上是一个典型的循环集合内删除的场景任务,工作一年第一次遇到这个场景,但是此前也有所了解,应该使用迭代器进行安全删除操作。但是在测试的过程中,仍然抛出了java.util.ConcurrentModificationException异常,甚是疑惑,我明明使用了迭代器啊,为什么还是出了这个异常?百度一下后才发现问题所在,不由得感叹:“真是纸上谈兵啊...”

我的代码如下:

    Iterator itr = list.iter();while(itr.hasNext()){boolean flag = false;//判断逻辑if(flag){list.remove();}}

实际上呢,所谓的迭代器安全移除,是要使用迭代器本身的移除方法。代码改成如下即可:

    Iterator itr = list.iter();while(itr.hasNext()){boolean flag = false;//判断逻辑if(flag){itr.remove();}}

具体的原因不再赘述,我所看的这篇文章里写的很清楚了,文章链接

转载于:https://www.cnblogs.com/ZzlevolFlash/p/10489040.html

(BUG记录)使用迭代器安全的删除处于循环下集合中的元素相关推荐

  1. java 迭代器 entryset_Java使用entrySet方法获取Map集合中的元素

    本文为大家分享了使用entrySet方法获取Map集合中元素的具体代码,供大家参考,具体内容如下 /*--------------------------------- 使用entrySet方法取出M ...

  2. PageCollectionView[Bug],使用Filter的时候,删除集合中的元素,会导致ArgumentOutOfRangeException...

    PageCollectionView,没有使用Filter的时候一切正常:当使用Filter的时候,删除集合中的元素,会抛出如下异常: 1: 指定的参数已超出有效值的范围.\n参数名: index 2 ...

  3. 循环的时候去删除集合中的元素 java.util.ConcurrentModificationException

    使用for循环,删除集合中的元素,会报错 java.util.ConcurrentModificationException 只能通过迭代器 iterator删除 1:在while循环中使用itera ...

  4. java删除集合元素吗_java如何删除集合中的元素

    java如何删除集合中的元素 如何使用java删除集合中的'元素呢?下面是小编给大家提供的删除集合中元素的常见方法,欢迎阅读,更多详情请关注应届毕业生考试网. Java代码如下: package co ...

  5. 删除集合中特定元素的几种情况

    从集合中删除元素一直是一个比较容易遗漏的知识点,今天来给大家介绍一下删除集合​​中特定元素的一些情况. ​(一)List如何实现遍历删除 以ArrayList为例 List<String> ...

  6. java set遍历删除元素_java中循环遍历删除List和Set集合中元素的方法

    今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录 ...

  7. Java 遍历 Set 集合的方法,以及如何遍历删除 Set 集合中的元素?

      Java 遍历 Set 有多种方式,如下示例所示. 一.Iterator 迭代器遍历 package com.example.demo.test;import java.util.HashSet; ...

  8. Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)

    Redis 的 set 集合内部的键值对是无序的唯一的.它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL .当集合中最后一个元素移除之后,数据结构自动删除,内存被回收. ...

  9. js删除两个集合中共同元素_多个集合中的共同和独特元素

    js删除两个集合中共同元素 本周,我们将暂时中断较高级别的问题和技术文章,以解决我们中许多人可能面临的一些代码问题. 没什么花哨的或太辛苦的,但是有一天它可能会节省您15分钟的时间,偶尔回到基础上也很 ...

  10. vue中如何在方法中动态的删除集合中的元素!?

    参考https://blog.csdn.net/weixin_42230550/article/details/87990486 vue中,如何在方法中动态的删除集合中的元素? me.btn_elem ...

最新文章

  1. LeetCode简单题之二分查找
  2. linux批处理mysql数据库_使用批处理对MySQL进行数据批量操作
  3. openssl+poly1305+sm4实现
  4. 2019 Android 高级面试题总结 从java语言到AIDL使用与原理
  5. 3224: Tyvj 1728 普通平衡树
  6. 如何做一名了不起的开发人员?
  7. java for语句(翻译自Java Tutorials)
  8. ArchLinux安装简单安装教程
  9. [POI2014]Freight
  10. C语言基础四(敲打键盘、寻找资料,循环语句)请一个个字读,助于您的学会机率...
  11. C++网络编程实例(socket)
  12. Listary与QTtabbar整合
  13. SNN系列|神经元模型篇(1) Hodgkin Huxley
  14. java 批量发送邮件,java利用网易邮箱批量发送邮件(带附件)
  15. 安卓手机使用VNET抓包京东wskey
  16. Deepin Linux禁用笔记本自带键盘
  17. chromium的下载和编译
  18. 【华为OD机试-按身高和体重排队-Java】
  19. neo4j安装详细步骤(小白版)
  20. 知行之桥堆内存及清理

热门文章

  1. ECharts(Enterprise Charts 商业产品图表库)初识
  2. ATC空管系统的实时控制软件系统分析
  3. POJ 2054 Color a Tree#贪心(难,好题)
  4. C#.NET 消息机制
  5. requests 上传本地文件到服务器
  6. BN、LN、IN、GN、SN归一化
  7. 统计学习方法读书笔记10-决策树
  8. linux---拷贝文件夹命令
  9. 软件技术架构:通过限流与熔断,打造一个“靠谱”的系统
  10. 程序员修炼道路上的“葵花宝典”——博文视点大讲堂42期快乐结束