您的位置:首页 > 其它

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

2015-07-31 16:40 357 查看
今天写代码时,需要删除一个列表中的某个元素,于是就用了一个循环,一边遍历一边删除,一个同事在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<ShapeEntity> iterator = list.iterator();
while(iterator.hasNext()){
ShapeEntity shapeEntity = iterator.next();
if(shapeEntity.icon_name.equals("shape8")){
iterator.remove();
}
}


这时候,我们可以使用Iterator的方式也可以顺利删除和遍历。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: