问题:使用for循环遍历删除数组或集合中指定元素时,若元素连续出现,则出现漏删现象。
原理图如下:
解决:每删除一个指定元素后,需设置使索引回退1位。
实例:
public class DeleteArrayListElement {
public static void main(String[] args) {
//创建集合
ArrayList<String> list=new ArrayList<>();
//添加内容
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
//遍历
for (int i = 0; i < list.size(); i++) {
String el= list.get(i);
//满足条件删除
if(el=="b"){
list.remove("b");
i-=1;//每删除一位,i减一位,索引回退一位
}
}
// 输出查看结果
System.out.println(list);//[a,c,d]
}
}