java中使用List<String>集合,然后我remove(0)了第一个元素后,为什么下次读到的不是下一个元素

就是我下了一段程序,关于进程管理的,那么我每一次输入都存放到List集合里面,我先remove(0)了第一个元素,显示于窗口,然后当第一个元素执行完后,我再remove(... 就是我下了一段程序,关于进程管理的,那么我每一次输入都存放到List集合里面,我先remove(0)了第一个元素,显示于窗口,然后当第一个元素执行完后,我再remove(0)一次,但是第二次却不是删到接下来的元素,而是第三或第四个,求解求救 展开
 我来答
runyiok
推荐于2017-11-25 · TA获得超过525个赞
知道小有建树答主
回答量:331
采纳率:50%
帮助的人:224万
展开全部
因为你删除了元素,但是未改变迭代的下标,这样当迭代到最后一个的时候就会抛异常咯。

可以对上面的程序进行如下改进:
for(int i = 0 , len= list.size();i<len;++i){

if(list.get(i)==XXX){

list.remove(i);
--len;//减少一个
}

}
List接口内部实现了Iterator接口,提供开发者一个iterator()得到当前list对象的一个iterator对象。(一般都用这种)
追问
不是这个问题,我再自己电脑上运行才会这个问题,然后在学校机房就不会,是不是jre版本的问题?
追答
你可以用 断点 测试一下嘛
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式