今天遇到一个很基础的面试题,就是在for循环中使用remove方法,输出的结果是什么。
如上图:一共10个数,遍历删除,输出结果是什么?
有人就会想,一共10个数,遍历出来再删除,最后这个集合里面肯定没有值了呀!
我们输出的结果如下图:
不是遍历了删除的嘛?为什么集合里面还有值呢?
因为使用remove把其中的一个实体移除了,整个list就变了,正在遍历的list突然就少了一条,索引下边也就发生了变化。
可以看下图:每删一个,就少一个,后面数就会向前移动一位,因为这里是remove(i),所以原始索引上的数删过一次就不会再删了。
四次循环之后就结束循环了,我们把list.size()换成6,也就是循环5次,这时候就报索引越界异常了。
版权属于:
尼采
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)