public class Test {
private static List<String> list = new ArrayList<String>();
public static void init(int num) {
for (int i = 0; i < num; i++) {
list.add(i + "");
}
}
public static void main(String[] args) {
int num = 5;
init(num);
for (String string : list) { //迭代一样修改异常。正常循环不会并发修改异常
if (string.equals(num - 1 + "")) //num-2时引发游标异位
{
System.out.println("执行remove操作");
list.remove(string);
} else {
System.out.println(string);
}
}
}
}
输出
0
1
2
3
执行remove操作
Exception in thread “main” java.util.ConcurrentModificationException
修改为
public static void main(String[] args) {
int num = 5;
init(num);
List<String> delList = new ArrayList<String>();//添加临时list集合
for (String string : list) {
// if (string.equals(num - 1 + ""))
if (string.equals(num - 2 + ""))
{
System.out.println("执行remove操作");
//不能这样一个一个移除啦 list.remove(string);
delList.add(string);
} else {
System.out.println(string);
}
}
list.removeAll(delList);// 统一移除
}
}