博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
List迭代时报ConcurrentModificationException异常
阅读量:6119 次
发布时间:2019-06-21

本文共 583 字,大约阅读时间需要 1 分钟。

查看源代码我们可以发现,List中有个modCount字段,如果在迭代过程中该字段修改了就会报ConcurrentModificationException异常。

下面看看相关源代码

初始状态下,modCount的值是0,在迭代开始时expectedModCount的值也为0,如果在迭代过程中删除了某个元素,此时modCount++后,modCount的值就变成1,那么下次迭代(调用next方法)时,会先调checkForComodification方法检查modCount和expectedModCount是否相等,显然此时二者不相等,于是抛异常。

下面是测试代码

细心的读者会发现,上述代码中,当等于A或者C的时候删除会抛异常,而等于B时删除时不会抛异常,其实这是个巧合。因为,第一次迭代时删除A后,cursor=1,size=2,于是进入下一轮迭代,于是在next中检测到modCount与expectedModCount不相等,抛异常。而假设等于B的时候删除,那么当进行第二次迭代删除B以后,cursor=2,size=2,cursor与size相等,所以hasNext()方法返回false,于是不再进行迭代,所以没有机会报错。

本文转自   手不要乱摸  51CTO博客,原文链接:http://blog.51cto.com/5880861/1693563

转载地址:http://twqka.baihongyu.com/

你可能感兴趣的文章
如何加速企业在互联网+时代完美转型
查看>>
《中国人工智能学会通讯》——12.45 k-modes 型算法的类中心表示与收 敛性分析...
查看>>
遇诈骗短信?360手机浏览器火眼金睛识别
查看>>
物联网:实现业务转型的关键应用模式
查看>>
外媒:六项提示帮你运用威胁情报技术
查看>>
“大数据”时代,什么是数据分析做不了的?
查看>>
对话IBM中间件高管 API经济背后蓝色巨人的野心和诚意
查看>>
《数字视频和高清:算法和接口》一2.5面向消费者的视频获取
查看>>
10大令人眼前一亮人工智能案例
查看>>
北京密云区携手锐捷打造新一代教育城域网 为互联网+教育“开山铺路”
查看>>
机器视觉技术在工业产品质量检测领域的应用
查看>>
浪潮服务器进驻科大讯飞 语音输入法识别更快更精准
查看>>
2017年大数据领域,这7大技术将退役!
查看>>
Splunk机器数据分析进军iOS移动应用领域
查看>>
美国破获最大网络盗窃案 1亿多份个人信息被窃
查看>>
澄清蓝牙五大误解
查看>>
iOS 视图---动画渲染机制探究
查看>>
联想企业云盘高可用方案:为数据提供万无一失的保障
查看>>
本周专栏评优:创业者如何看待USB Type-C
查看>>
如何玩转JavaScript的事件循环
查看>>