迭代器并发修改异常(ConcurrentModificationException)与列表迭代器(ListIterator)——每天一个Java小常识

本文介绍了Java中迭代器并发修改异常(ConcurrentModificationException)的发生条件,即在迭代过程中直接修改集合导致的异常。为解决此问题,提出了两种方案:一是使用for循环遍历集合;二是利用List特有的列表迭代器(ListIterator),它允许在遍历期间修改列表,并提供了更多的操作方法。同时,详细阐述了ListIterator的特性及其常用方法,并给出了代码示例。
摘要由CSDN通过智能技术生成

喜欢就扣1支持吧

我在之前的一个文章里介绍过迭代器Iterator,不了解迭代器的可以看下

名词解释
modCount :实际修改集合的次数
expectedModCount :预期修改集合的次数
ConcurrentModificationException:并发修改异常

异常发生条件

  • 实际修改集合的次数 不等于 预期修改集合的次数时,提示并发修改异常
  • 迭代器遍历的过程中 ,通过集合对象修改了集合中元素的长度, 造成了迭代器获取元素中判断预期修改值和实际修改值不一致

解决方案

  • 方案一:用for循环遍历, 然后用集合对象做对应的操作即可
  • 方案二:使用列表迭代器(ListIterator)使用前提必须时List集合

列表迭代器(ListIterator)

  • 通过List集合的listlterator()方法得到, 所以它是List集合特有的迭代器
  • 用于允许程序员沿任一方向遍历列表的列表迭代器, 在迭代期间修改列表,并获取列表中迭代器的当前位置

Listlterator中的常用方法

方法 说明
E next() 返回迭代中的下一一个元素
boolean hasNext() 如果迭代具有更多元素,则返回true
E previous() 返回列表中的上一个元素
boolean hasPrevious() 如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true
void add(E e) 将指定的元素插入列表

Listlterator与Iterator代码样例

import java.util.*
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值