最近在写代码的时候遇到了遍历时删除List元素的问题,在此写一篇博客记录一下。
一般而言,遍历List元素有以下三种方式:
- 使用普通for循环遍历
- 使用增强型for循环遍历
- 使用iterator遍历
使用普通for循环遍历
代码如下:
public class Main {
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++)
list.add(i);
// list {0, 1, 2, 3, 4}
for (int i = 0; i < list.size(); i++) {
// index and number
System.out.print(i + " " + list.get(i));
if (list.get(i) % 2 == 0) {
list.remove(list.get(i));
System.out.print(" delete");
i--; // 索引改变!
}
System.out.println();
}
}
}
结果如下:
可以看到遍历删除偶数的结果是成功的,但是这种方法由于删除的时候会改变list的index索引和size大小,可能会在遍历时导致一些访问越界的问题,因此不是特别推荐。