📅  最后修改于: 2023-12-03 15:01:52.411000             🧑  作者: Mango
CopyOnWriteArrayList
是 ArrayList
的线程安全版本,使用 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
对象不会受到影响。