码迷,mamicode.com
首页 > 其他好文 > 详细

不要在 foreach 循环里进行元素的 remove / add 操作

时间:2017-10-10 16:54:10      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:foreach remove

在foreach 循环里面,不能用remove方法,因为当list里面的最后一个元素被remove时候,会报错。

摘自《阿里巴巴Java开发手册》

【强制】不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator

方式,如果并发操作,需要对 Iterator 对象加锁。

反例:

List<String> a = new ArrayList<String>();

a.add("1");

a.add("2");

for (String temp : a) {

if("1".equals(temp)){

    a.remove(temp);

}

}

说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的

结果吗?

正例:

Iterator<String> it = a.iterator();

while(it.hasNext()){

String temp = it.next();

if(删除元素的条件){

    it.remove();

}

}


本文出自 “JianBo” 博客,请务必保留此出处http://jianboli.blog.51cto.com/12075002/1971180

不要在 foreach 循环里进行元素的 remove / add 操作

标签:foreach remove

原文地址:http://jianboli.blog.51cto.com/12075002/1971180

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!