1 使用for遍历:报错:并发修改异常,即不能在遍历的同时修改自己, 错误示范(虽然删除1时没有报错,删除2时报错)
可查看源码逻辑查找答案,参考https://blog.youkuaiyun.com/wangjun5159/article/details/61415358
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
for (String temp : a) {
if("1".equals(temp)){
a.remove(temp);
}
}
2 使用迭代器遍历:ok
Iterator<String> it= a.iterator();
while(it.hasNext()){
String temp = it.next();
if("1".equals(temp)){
it.remove();
}
}
3 for 这种写法可以自己修正index的值
for(int i=0; i<list.size(); i++){
if(flag){
//删除元素
//修正index,否则不会出现异常,但是会略过某些元素
i=i-1;
}
}