Java迭代器iterator遍历有条件删除对象

在使用迭代器遍历对象并对对象使用删除操作时可能发生的问题指南

文章目录

  • Java迭代器iterator遍历有条件删除对象
  • 前言
  • 总结

前言

前不久在使用Java迭代器 iterator 对象遍历执行 list 对象操作,当我根据条件删除 list 内的元素时,再次运行到 iterator.next() 时就会出错,想要在循环遍历的过程中删除集合中的元素,但是运行代码的时候遇到了这么一个错: java.util.ConcurrentModificationException: null代码如下:

Iterator<String> it = taskIdList.iterator();
while (it.hasNext()) {String string = it.next();if(string.shouldRemove()){taskIdList.remove(string);}
}

其实这样写是不正确的,当我们迭代一个ArrayList或者HashMap时,如果尝试对集合做一些修改操作(例如删除元素),可能会抛出java.util.ConcurrentModificationException的异常,因为原迭代集合和迭代对象已经不一样了,当再次运行到 iterator.next() 就会报错。正确写法应该如下:

Iterator<String> it = taskIdList.iterator();
while (it.hasNext()) {String string = it.next();if(string.shouldRemove()){it.remove();}
}

这才是保证效率和安全性的正确写法。

总结

参考资料
1. java中迭代器Iterator,遍历集合删除集合中满足条件的元素 https://blog.csdn.net/qq_41135254/article/details/107163989
2. 解决:java.util.ConcurrentModificationException: null:异常 https://blog.csdn.net/qq_43599835/article/details/90602742

Java迭代器iterator遍历有条件删除对象相关推荐

  1. 【java迭代器Iterator】获取单个元素,循环遍历和删除

    java迭代器Iterator 什么是Iterator 怎么获取Iterator对象 Iterator三个常用方法 E next() 获取单个元素 boolean hasNext() 可用于循环遍历 ...

  2. java 迭代器只遍历了一次的解决方案

    java 迭代器只遍历了一次的解决方案 参考文章: (1)java 迭代器只遍历了一次的解决方案 (2)https://www.cnblogs.com/kinome/p/9969938.html 备忘 ...

  3. Java迭代器Iterator令人迷惑的方法名 hasNext(),next()解析

    Java迭代器Iterator令人迷惑的方法名 hasNext(),next()解析推荐,文章很清晰,再也不会迷惑啦:https://blog.csdn.net/weixin_44062380/art ...

  4. java:迭代器Iterator

    迭代器Iterator是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而不必暴露该对象内部细节的方法. 通过容器的 iterator()方 ...

  5. Java 迭代器Iterator

    一.迭代器作用: 通用的取出集合中元素的方法(对集合进行遍历) 二.迭代器概念: 迭代: 即collection集合元素的通用获取方式,在取出元素之前先要判断集合中是否有没有元素,如果有,就把这个元素 ...

  6. Java迭代器 | Iterator用法

    迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价 ...

  7. Java迭代器Iterator接口

    迭代器 Iterator接口 迭代器的代码实现 增强for循环 Iterator接口 java.util.Iterator接口:(对集合进行遍历) 有两个常用方法 1.boolean hasNext( ...

  8. 【JAVASE小新】迭代器iterator遍历集合

    package Gather.CollectionArrayList;import java.util.ArrayList; import java.util.Collection; import j ...

  9. Java迭代器Iterator

    Iterator 迭代器 遍历集合,内部采用指针的方式,来跟踪集合中的元素 用于迭代访问Collection中的元素 HasNext() 判断集合中是否,存在下一个元素 返回值为true.false ...

最新文章

  1. Linq-ToList与ToArray
  2. 浏览器HTTP缓存机制
  3. python中的format什么意思中文-Python中format()格式输出全解
  4. safari浏览器横屏怎么设置_Safari浏览器的几个小技巧你掌握了吗?
  5. 大学英语期末考计算机上答卷,英语期末考试质量分析
  6. Innodb中的buffer poll和redo undo log
  7. Go语言---并发编程goroutine
  8. 《Java从入门到放弃》JavaSE入门篇:面向对象语法二(入门版)
  9. Julia: Join与字符串Array
  10. 约瑟夫问题(Josephus problem)详解
  11. 易语言源码翻译c,易语言编写翻译小工具源码
  12. Beta周王者荣耀交流协会第五次Scrum会议
  13. python绘制条形图的方法_python绘制条形图方法代码详解
  14. JS(JavaScript)中实现深浅拷贝的几种方式(详细阅读 非常重要)。
  15. 迅雷磁盘缓存设置过高会影响其它网络应用软件的速度
  16. vue3中添加elementui插件
  17. 光端机连接示意图详细连接方式图解
  18. 世界各国劳动力总数数据集1990-2019年
  19. 易语言编译和c语言,易语言独立编译的EXE文件问题
  20. android 8 奕骆,【innos奕骆D6000评测】又一待机神器诞生 innos 奕骆D6000评测(全文)_innos 奕骆D6000_手机评测-中关村在线...

热门文章

  1. 【j2ee spring】39、巴巴运动网的产品信息
  2. mysql max()函数和min函数
  3. 运动蓝牙耳机怎么选,健身耳机运动耳机推荐
  4. 25:JMU-Python-分段函数2
  5. npm 如何提升最新版本 安装 卸载
  6. aws codecommit配置和使用
  7. 【社会化评论】“重要通知: 多说即将关闭”
  8. 华为MATE9系列刷机解锁和回锁实用教程
  9. few-shot NER 数据集 和普通NER数据集的区别与联系
  10. 越级超值,北汽魔方是怎么做到的?