集合类的遍历删除问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合类的遍历删除问题相关的知识,希望对你有一定的参考价值。

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

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

技术分享

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

技术分享

技术分享

 

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

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

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

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

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

 

以上是关于集合类的遍历删除问题的主要内容,如果未能解决你的问题,请参考以下文章

java 里的 Collection接口有啥作用

详解遍历集合和遍历集合时删除集合元素

java数据结构--集合类及其数据结构归纳

Java中的集合类,集合类有哪些,如何增添删除元素,如何遍历

8.0Java集合类

集合类   day-11.3