List如何正确删除元素

    public static void main(String[] args) {
        List list = Lists.newArrayList(1, 2, 3, 4, 5);

        list.forEach(item -> {
            if (item == 3) {
                list.remove(3);
            }
        });
    }

使用foreach删除集合元素的时候,有可能会报错,报错信息如下:

 这是因为在使用foreach循环时,Java会使用迭代器来遍历集合中的元素,而在集合被修改时,迭代器可能会失效,从而导致ConcurrentModificationException异常的抛出。

为了避免这个问题,可以使用Iterator的remove()方法来删除元素,这样可以避免ConcurrentModificationException异常的出现。代码如下:

    public static void main(String[] args) {
        List list = Lists.newArrayList(1, 2, 3, 4, 5);

        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Integer next = iterator.next();
            if (next == 3) {
                iterator.remove();
            }
        }
    }
以上代码还有一个简单的写法,使用removeIf
    List list = Lists.newArrayList(1, 2, 3, 4, 5);
    list.removeIf(item -> item == 3);

你可能感兴趣的:(java,list)