java list循环中删除某一项不符合条件的数据

在 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() 方法可以规避这个问题。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注