先粘上测试代码:
public class test {
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
for(Integer i:list)
{
if(i.equals(1))
{
list.remove(i);
}
}
}
}
跑出的结果:
分析:
实际上foreach语句内部实现是迭代器,不允许在此中删除之后再次迭代
故若想遍历并remove元素,不能采用迭代器或者是foreach语句,我猜想是因为我使用Iterator进行迭代的同时,移除了其中的对象,破坏了Iterator内部用来迭代的索引。所以抛出异常。
如果使用普通的for循环,自己设定索引i 进行循环,就不会出现此问题
如下
public class test {
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
for(int i=0;i<list.size();i++)
{
if(list.get(i).equals(1))
{
list.remove(i);
}
}
System.out.println(list);
}
}
结果:
成功跑出我们想要的结果