您现在的位置:首页 > >

ArrayList边遍历自身边删除元素的方法

发布时间:

今天写代码时,需要删除一个列表中的某个元素,于是就用了一个循环,一边遍历一边删除,一个同事在review我的代码时告诉我,不能这样写,会出问题。


for(int i = 0; i < list.size(); i++){
if(list.get(i).icon_name.equals("shape8"){
list.remove(i);
}
}

于是,Google了一下,原来这种遍历有可能会遗漏某个元素,因为删除元素后List的size在变化,元素的索引也在变化,比如你循环到第2个元素的时候你把它删了,接下来你去访问第3个元素,实际上访问到的是原先的第4个元素。


Iterator iterator = list.iterator();
while(iterator.hasNext()){
ShapeEntity shapeEntity = iterator.next();
if(shapeEntity.icon_name.equals("shape8")){
iterator.remove();
}
}

这时候,我们可以使用Iterator的方式也可以顺利删除和遍历。


热文推荐
猜你喜欢
友情链接: 大学学习资料 人文社科 经营营销资料 工程资料大全 IT文档 自然科学