在 Java 中,当你在循环中遍历一个 List 并删除其中不符合条件的项时,需要小心处理,因为直接在循环内部删除元素可能会导致索引错位或遗漏元素。为了避免这些问题,可以使用迭代器来安全地删除列表中的元素。以下是一个示例代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListRemoveExample {
public static void main(String[] args) {
// 创建一个示例 List
List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(10);
numbers.add(15);
numbers.add(20);
// 使用迭代器遍历并删除不符合条件的项
Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
Integer number = iterator.next();
if (number % 2 == 0) {
// 删除偶数
iterator.remove();
}
}
// 输出结果
System.out.println("Filtered List:");
for (Integer number : numbers) {
System.out.println(number);
}
}
}
在这个示例中,我们创建了一个包含一些整数的 List,然后使用迭代器遍历列表并删除偶数。使用迭代器的 remove()
方法可以安全地删除当前迭代器所指向的元素,而不会影响遍历的正确性。
需要注意的是,直接在循环内使用 List 的 remove()
方法可能会导致 ConcurrentModificationException
异常,这是因为在修改集合时迭代器失效了。使用迭代器的 remove()
方法可以规避这个问题。