首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 之 集合中的 modCount的作用「建议收藏」

Java 之 集合中的 modCount的作用「建议收藏」

作者头像
全栈程序员站长
发布2022-09-22 15:20:45
发布2022-09-22 15:20:45
6700
举报

大家好,又见面了,我是你们的朋友全栈君。

modCount:记录当前集合被修改的次数 在所有的集合实现类中(Collection与Map中),都会有一个 modCount 的变量出现,它的作用就是记录当前集合被修改的次数。

下面以ArrayList 类进行说明:

添加方法:

删除方法:

可以看出,两个操作都会影响元素的个数。 当我们使用迭代器或 foreach 遍历时,如果你在 foreach 遍历时,自动调用迭代器的迭代方法,此时在遍历过程中调用了集合的add,remove方法时,modCount就会改变,而迭代器记录的modCount是开始迭代之前的,如果两个不一致,就会报异常,说明有两个线路(线程)同时操作集合。这种操作有风险,为了保证结果的正确性, 避免这样的情况发生,一旦发现modCount与expectedModCount不一致,立即报错。

此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改, 否则在任何时间以任何方式对列表进行修改, 迭代器都会抛出 ConcurrentModificationException。 因此,面对并发的修改,迭代器很快就会完全失败, 而不是冒着在将来某个不确定时间发生任意不确定行为的风险。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169151.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档