不要在 foreach 循环里进行元素的 remove / add 操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不要在 foreach 循环里进行元素的 remove / add 操作相关的知识,希望对你有一定的参考价值。
在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 操作的主要内容,如果未能解决你的问题,请参考以下文章
为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作?
为什么不要在 foreach 循环里进行元素的 remove / add 操作
为什么在foreach循环中不要对元素进行remove/add操作?
为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作