list集合在for循环中的remove方法!

list集合在for循环中的remove方法!

尼采
2021-10-14 / 0 评论 / 375 阅读 / 正在检测是否收录...

今天遇到一个很基础的面试题,就是在for循环中使用remove方法,输出的结果是什么。

如上图:一共10个数,遍历删除,输出结果是什么?
有人就会想,一共10个数,遍历出来再删除,最后这个集合里面肯定没有值了呀!
我们输出的结果如下图:

不是遍历了删除的嘛?为什么集合里面还有值呢?
因为使用remove把其中的一个实体移除了,整个list就变了,正在遍历的list突然就少了一条,索引下边也就发生了变化。
可以看下图:每删一个,就少一个,后面数就会向前移动一位,因为这里是remove(i),所以原始索引上的数删过一次就不会再删了。

四次循环之后就结束循环了,我们把list.size()换成6,也就是循环5次,这时候就报索引越界异常了。

1

评论 (0)

取消