📌  相关文章
📜  Java中的 CopyOnWriteArrayList remove() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:46.521000             🧑  作者: Mango

Java中的 CopyOnWriteArrayList remove() 方法及示例

Java中的 CopyOnWriteArrayList 是线程安全的 List 实现,它采用了写时复制的策略,在进行修改操作时,会先复制一个新的数组,然后在新数组上进行修改和操作,在操作完毕后再将原数组指向新数组。这种策略虽然会占用更多的空间,但可以保证线程安全,同时避免了修改过程中的并发访问问题。本文将介绍 CopyOnWriteArrayList 的 remove() 方法及示例。

remove() 方法

CopyOnWriteArrayList 的 remove() 方法用于删除元素,它有两个重载版本:

public E remove(int index);
public boolean remove(Object o);
  • remove(int index):根据索引值删除指定位置的元素,返回被删除的元素。
  • remove(Object o):删除指定元素,返回是否删除成功。

CopyOnWriteArrayList 的 remove() 方法会先对数组进行复制操作,然后在复制后的新数组上进行修改和操作,所以它是线程安全的。

示例

下面是 CopyOnWriteArrayList remove() 方法的示例代码:

import java.util.concurrent.CopyOnWriteArrayList;

public class CopyOnWriteArrayListRemoveExample {
    public static void main(String[] args) {
        CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        // 根据索引值删除元素
        String removed = list.remove(1);
        System.out.println("元素 " + removed + " 已被删除");
        System.out.println("删除后的列表:" + list);

        // 删除指定元素
        boolean success = list.remove("c");
        System.out.println("元素 c " + (success ? "已" : "未") + "被删除");
        System.out.println("删除后的列表:" + list);
    }
}

上述代码首先创建了一个 CopyOnWriteArrayList 实例,并向其添加了 4 个元素。然后分别使用 remove() 方法根据索引值和元素值删除元素,并打印出删除后的列表。

运行上述代码,输出结果如下:

元素 b 已被删除
删除后的列表:[a, c, d]
元素 c 已被删除
删除后的列表:[a, d]

从输出结果可以看出,使用 remove() 方法删除元素时,会先对数组进行复制操作,然后在复制后的新数组上进行修改和操作,保证线程安全。