List遍历删除元素
1.错误方法:使用forEach循环
//准备数据
List<Integer> list=new ArrayList<>();
list.add(2);
list.add(3);
list.add(4);
list.add(2);
//遍历
list.forEach(i->{
System.out.print(i + " ");
});
//删除元素
list.forEach(i->{
if (i==3){
list.remove(i);
}
});
//输出
list.forEach(i->{
System.out.print(i + " ");
});
结果:报以下异常
java.util.ConcurrentModificationException
2.正确方式:使用iterator迭代器
//准备数据
List<Integer> list=new ArrayList<>();
list.add(2);
list.add(3);
list.add(4);
list.add(2);
//遍历
list.forEach(i->{
System.out.print(i + " ");
});
//获取迭代器
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()){
Integer next = iterator.next();
if (next==3){
//用迭代器删除
iterator.remove();
}
}
//输出
list.forEach(i->{
System.out.print(i + " ");
});
结果为:删除成功
# 控制台输出以下内容
2 3 4 2
2 4 2