首页 > 代码库 > 集合类的遍历删除问题

集合类的遍历删除问题

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

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

技术分享

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

技术分享

技术分享

 

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

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

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

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

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

 

集合类的遍历删除问题