普通for循环遍历List时调用remove方法,List没有遍历完。为什么? 200

 我来答
王森小瘦瘦
2017-08-16 · TA获得超过244个赞
知道答主
回答量:199
采纳率:33%
帮助的人:47.5万
展开全部
list集合有个特点,比如说一个list里面有三个元素a,b,c,对应的索引分别是0,1,2。当调用remove(0)时,list会移除a这个元素,这个时候list里面的元素就变成b,c,对应的索引值分别为0,1。这个时候list的size已经变成了2,但是如楼主的for循环的话,循环的上限还是最开始的list的size值,也就是3。如此下去每移除一个元素的时候,list的索引取值范围都会变小,最后如果remove(i)中i的值超出了当前集合的范围了,就会报异常
马川034
2017-08-16 · TA获得超过175个赞
知道小有建树答主
回答量:231
采纳率:87%
帮助的人:107万
展开全部
for循环中i=list.size(),这个i的值是递增的
你每次删掉一个就相当于i跳过了一个;
比如:
当i=2的时候删除了一个元素,那么list中本来是i=3的元素变成i=2的
由于i在下一次还会增加,所以下一次循环的时候实际上是取的i=4的元素
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式