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

📅  最后修改于: 2023-12-03 15:01:52.411000             🧑  作者: Mango

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

CopyOnWriteArrayListArrayList 的线程安全版本,使用 CopyOnWriteArrayList 可以用来代替 ArrayList 来避免线程安全问题。

retainAll() 方法是 CopyOnWriteArrayList 类的方法之一,其作用是保留列表中的特定元素而删除其他元素。这个方法会返回一个布尔值,表示列表在操作后是否发生了变化。

下面是一个示例代码,展示了如何使用 retainAll() 方法在 CopyOnWriteArrayList 中保留特定的元素:

import java.util.concurrent.CopyOnWriteArrayList;

public class RetainAllExample {
    public static void main(String[] args) {
        // 创建一个 CopyOnWriteArrayList 对象
        CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();

        // 向列表中添加元素
        list.add("Java");
        list.add("Python");
        list.add("C++");
        list.add("JavaScript");
        list.add("Ruby");
        System.out.println("原列表:" + list);

        // 保留指定的元素
        list.retainAll(List.of("Java", "C++", "PHP"));
        System.out.println("操作后的列表:" + list);
    }
}

以上代码中,首先创建了一个 CopyOnWriteArrayList 对象,然后向其中添加了几个元素。接着调用 retainAll() 方法来保留特定的元素,即只保留 "Java", "C++", "PHP",并删除其他元素。最后,打印出操作后的列表。输出结果如下:

原列表:[Java, Python, C++, JavaScript, Ruby]
操作后的列表:[Java, C++]

需要注意的是,retainAll() 方法会创建一个新的列表来保存被保留的元素。因此,原始的 CopyOnWriteArrayList 对象不会受到影响。