不要在foreach循环里进行元素的remove/add操作
2018-04-19 17:47
281 查看
【强制】不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。
正例:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (删除元素的条件) {
iterator.remove();
}
} 反例:
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
for (String item : list) {
if ("1".equals(item)) {
list.remove(item);
}
}
说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的结果吗?
正例:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (删除元素的条件) {
iterator.remove();
}
} 反例:
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
for (String item : list) {
if ("1".equals(item)) {
list.remove(item);
}
}
说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的结果吗?
相关文章推荐
- 不要在foreach循环里进行元素的remove/add操作
- 不要在 foreach 循环里进行元素的 remove / add 操作
- foreach循环里进行元素的remove/add操作
- 不要在foreach 循环里进行集合元素的 remove/add 操作
- 不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁
- 不要在foreach循环里进行元素的add/remove操作
- 不要在 foreach 循环里进行元素的 remove / add 操作
- foreach循环中为什么不要进行remove/add操作
- foreach循环中为什么不要进行remove/add操作
- 不要在 foreach 循环里进行元素的 remove/add 操作
- 互换二维数组的行列。要求数组的行数、列数以及各元素均从键盘输入;输出互换前数组内容和互换后数组内容。(要求循环输入进行测试)Java
- C++循环链表中进行元素的翻转
- java.util.ArrayList在foreach循环遍历时删除元素的问题
- 《Effective C#》Item 11:提倡使用foreach语句来进行循环操作
- 编写高质量代码改善C#程序的157个建议:第17个建议之多数情况下使用foreach进行循环遍历
- foreach循环删除集合中的元素出现ConcurrentModificationException异常(补充)
- 下面将针对java.util.ArrayList在foreach循环遍历时删除元素的问题
- C++循环链表中进行元素的翻转
- 转:《Effective C#》Item 11:提倡使用foreach语句来进行循环操作
- LinkedList,ArrayList在foreach循环遍历时可以删除元素!!!