java中使用List<String>集合,然后我remove(0)了第一个元素后,为什么下次读到的不是下一个元素
就是我下了一段程序,关于进程管理的,那么我每一次输入都存放到List集合里面,我先remove(0)了第一个元素,显示于窗口,然后当第一个元素执行完后,我再remove(...
就是我下了一段程序,关于进程管理的,那么我每一次输入都存放到List集合里面,我先remove(0)了第一个元素,显示于窗口,然后当第一个元素执行完后,我再remove(0)一次,但是第二次却不是删到接下来的元素,而是第三或第四个,求解求救
展开
1个回答
展开全部
因为你删除了元素,但是未改变迭代的下标,这样当迭代到最后一个的时候就会抛异常咯。
可以对上面的程序进行如下改进:
for(int i = 0 , len= list.size();i<len;++i){
if(list.get(i)==XXX){
list.remove(i);
--len;//减少一个
}
}
List接口内部实现了Iterator接口,提供开发者一个iterator()得到当前list对象的一个iterator对象。(一般都用这种)
可以对上面的程序进行如下改进:
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版本的问题?
追答
你可以用 断点 测试一下嘛
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询