我们通过remove删除集合中满足某个条件的元素时,推荐使用逆向遍历删除,如果正向遍历,必须要注意索引值得改变,一下代码显示了其中的区别
public class remove_demo {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add(“张无忌”);
list.add(“张三丰”);
list.add(“张翠山”);
list.add(“王明”);
list.add(“王卫东”);
list.add(“李打”);
list.add(“张污染”);
//正向遍历删除姓张的
for (int i = 0; i < list.size(); i++) {
if(list.get(i).startsWith("张")){
list.remove(i);
i--; --------------此处必须注意需要索引减1一
}
}
System.out.println(list);
//逆向遍历删除姓张的
for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i).startsWith("张")) {
list.remove(i);
}
}
System.out.println(list);
}
}