码迷,mamicode.com
首页 > 其他好文 > 详细

集合类的遍历删除问题

时间:2016-12-27 20:19:44      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:log   ext   src   遍历   bug   hash   edm   ges   错误   

1:今天使用ArrayList集合,在使用遍历的时候出现了很多问题。

我发现使用遍历ArrayList集合的时候,删除添加元素报错

技术分享

查了资料,看了源码如下:

技术分享

技术分享

 

发现这个arraylist的遍历是不一样的,每一个集合类都有自己实现的遍历接口,e而list的ArrayList接口实现的这个遍历接口内部类,它是先判断

hasnext是否可以成功,可以继续,不可以退出,这个modCount和expectedModCount,是用来计算Arraylist集合被修改次数的,一个代表遍历的,

一个代表集合本身,如果直接在遍历中修改集合,不通过遍历器本身,那么这2个值就会不一样,就会抛出那个错误了,但是这个有个bug,那就是删除倒数第二个

值,先进行hasnext判断,由于减少了一个size正好和游标一样,不遍历最后一个元素直接退出了,

其余的一些集合比如hashset这个集合的遍历实现却不是像这个一样,没有什么问题,没有bug.

 

集合类的遍历删除问题

标签:log   ext   src   遍历   bug   hash   edm   ges   错误   

原文地址:http://www.cnblogs.com/donghang/p/6227308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!