(BUG记录)使用迭代器安全的删除处于循环下集合中的元素
今日在写一个功能时,需要从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记录)使用迭代器安全的删除处于循环下集合中的元素相关推荐
- java 迭代器 entryset_Java使用entrySet方法获取Map集合中的元素
本文为大家分享了使用entrySet方法获取Map集合中元素的具体代码,供大家参考,具体内容如下 /*--------------------------------- 使用entrySet方法取出M ...
- PageCollectionView[Bug],使用Filter的时候,删除集合中的元素,会导致ArgumentOutOfRangeException...
PageCollectionView,没有使用Filter的时候一切正常:当使用Filter的时候,删除集合中的元素,会抛出如下异常: 1: 指定的参数已超出有效值的范围.\n参数名: index 2 ...
- 循环的时候去删除集合中的元素 java.util.ConcurrentModificationException
使用for循环,删除集合中的元素,会报错 java.util.ConcurrentModificationException 只能通过迭代器 iterator删除 1:在while循环中使用itera ...
- java删除集合元素吗_java如何删除集合中的元素
java如何删除集合中的元素 如何使用java删除集合中的'元素呢?下面是小编给大家提供的删除集合中元素的常见方法,欢迎阅读,更多详情请关注应届毕业生考试网. Java代码如下: package co ...
- 删除集合中特定元素的几种情况
从集合中删除元素一直是一个比较容易遗漏的知识点,今天来给大家介绍一下删除集合中特定元素的一些情况. (一)List如何实现遍历删除 以ArrayList为例 List<String> ...
- java set遍历删除元素_java中循环遍历删除List和Set集合中元素的方法
今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录 ...
- Java 遍历 Set 集合的方法,以及如何遍历删除 Set 集合中的元素?
Java 遍历 Set 有多种方式,如下示例所示. 一.Iterator 迭代器遍历 package com.example.demo.test;import java.util.HashSet; ...
- Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)
Redis 的 set 集合内部的键值对是无序的唯一的.它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL .当集合中最后一个元素移除之后,数据结构自动删除,内存被回收. ...
- js删除两个集合中共同元素_多个集合中的共同和独特元素
js删除两个集合中共同元素 本周,我们将暂时中断较高级别的问题和技术文章,以解决我们中许多人可能面临的一些代码问题. 没什么花哨的或太辛苦的,但是有一天它可能会节省您15分钟的时间,偶尔回到基础上也很 ...
- vue中如何在方法中动态的删除集合中的元素!?
参考https://blog.csdn.net/weixin_42230550/article/details/87990486 vue中,如何在方法中动态的删除集合中的元素? me.btn_elem ...
最新文章
- LeetCode简单题之二分查找
- linux批处理mysql数据库_使用批处理对MySQL进行数据批量操作
- openssl+poly1305+sm4实现
- 2019 Android 高级面试题总结 从java语言到AIDL使用与原理
- 3224: Tyvj 1728 普通平衡树
- 如何做一名了不起的开发人员?
- java for语句(翻译自Java Tutorials)
- ArchLinux安装简单安装教程
- [POI2014]Freight
- C语言基础四(敲打键盘、寻找资料,循环语句)请一个个字读,助于您的学会机率...
- C++网络编程实例(socket)
- Listary与QTtabbar整合
- SNN系列|神经元模型篇(1) Hodgkin Huxley
- java 批量发送邮件,java利用网易邮箱批量发送邮件(带附件)
- 安卓手机使用VNET抓包京东wskey
- Deepin Linux禁用笔记本自带键盘
- chromium的下载和编译
- 【华为OD机试-按身高和体重排队-Java】
- neo4j安装详细步骤(小白版)
- 知行之桥堆内存及清理