您的位置:首页 > 其它

在循环过程中删除List的元素

2016-09-07 19:53 232 查看
今天遇到了一个问题,需要循环一个list,并且在循环中对每个元素依据某条件进行判断,不符合规则则移除元素。

最开始写考虑到删除List中元素会使其他元素位移,所以使用增强for来进行实现,代码如下:

for(Object object : list){
if(object.id<5){
list.remove(object);
}
}


运行以上语句会报异常ConcurrentModificationException。这个异常翻译过来是并发修改异常。

在网上查阅资料才知道,这种情景下要删除元素应该使用Iterator,代码如下:

Iterator<Object> iterator = list.iterator();
while(iterator.hasNext()){
Object object = iterator.next();
if(object.id<5){
iterator.remove();
}
}


这样list中满足条件的元素就被移除了。或者另一种解决方案是使用原始的for循环来删除list中的元素,这样并不会有异常产生。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  List