1:今天使用ArrayList集合,在使用遍历的时候出现了很多问题。
我发现使用遍历ArrayList集合的时候,删除添加元素报错
查了资料,看了源码如下:
发现这个arraylist的遍历是不一样的,每一个集合类都有自己实现的遍历接口,e而list的ArrayList接口实现的这个遍历接口内部类,它是先判断
hasnext是否可以成功,可以继续,不可以退出,这个modCount和expectedModCount,是用来计算Arraylist集合被修改次数的,一个代表遍历的,
一个代表集合本身,如果直接在遍历中修改集合,不通过遍历器本身,那么这2个值就会不一样,就会抛出那个错误了,但是这个有个bug,那就是删除倒数第二个
值,先进行hasnext判断,由于减少了一个size正好和游标一样,不遍历最后一个元素直接退出了,
其余的一些集合比如hashset这个集合的遍历实现却不是像这个一样,没有什么问题,没有bug.
时间: 2024-11-08 17:28:06