不要在 foreach 循环里进行元素的 remove / add 操作
2017-11-18 17:19
411 查看
在foreach 循环里面,不能用remove方法,因为当list里面的最后一个元素被remove时候,会报错。
【强制】不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。
反例:
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
for (String temp : a) {
if("2".equals(temp)){
a.remove(temp);
}
}
说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的
结果吗?
正例:
【强制】不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。
反例:
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
for (String temp : a) {
if("2".equals(temp)){
a.remove(temp);
}
}
说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的
结果吗?
正例:
Iterator<String> it = a.iterator(); while(it.hasNext()){ String temp = it.next(); if(删除元素的条件){ it.remove(); } }答案未报错
相关文章推荐
- 不要在foreach 循环里进行集合元素的 remove/add 操作
- 不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁
- 不要在 foreach 循环里进行元素的 remove / add 操作
- 不要在 foreach 循环里进行元素的 remove/add 操作
- 不要在foreach循环里进行元素的remove/add操作
- list,set等集合遍历时,不能remove集合中的元素。需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAll(list/set)操作
- 不要在foreach循环里进行元素的remove/add操作
- 不要在foreach循环里进行元素的add/remove操作
- foreach循环里元素的remove操作
- 使用Iterator方式对集合进行remove/add 操作
- 《Effective C#》Item 11:提倡使用foreach语句来进行循环操作
- foreach循环中为什么不要进行remove/add操作
- 《Effective C#》Item 11:提倡使用foreach语句来进行循环操作
- 接受POST表单传过来的信息 可以用foreach循环进行遍历操作
- 转:《Effective C#》Item 11:提倡使用foreach语句来进行循环操作
- 《Effective C#》Item 11:提倡使用foreach语句来进行循环操作
- for循环里面不要进行remove操作
- Effective C# 提倡使用foreach语句来进行循环操作
- foreach循环里进行元素的remove/add操作
- 提倡使用foreach语句来进行循环操作