Java 中的 CopyOnWriteArraySet 类
java programming java8object oriented programming
类声明
public class CopyOnWriteArraySet<E> extends AbstractSet<E> 实现 Serializable
CopyOnWriteArraySet 类在其所有操作中内部使用 CopyOnWriteArrayList,因此具有 CopyOnWriteArrayList 的基本属性。
CopyOnWriteArraySet 是线程安全的。
CopyOnWriteArraySet 用于基于线程的环境,其中读取操作非常频繁,而更新操作很少。
CopyOnWriteArraySet 的迭代器永远不会抛出 ConcurrentModificationException。
自迭代器创建以来,对 CopyOnWriteArraySet 的任何类型的修改都不会在迭代过程中反映出来。
迭代中不支持诸如 remove、set 和 add 之类的集合修改方法。此方法将抛出 UnsupportedOperationException。
CopyOnWriteArraySet 方法
以下是 CopyOnWriteArraySet 类中可用的重要方法列表。
Sr.No. | 方法与说明 |
---|---|
1 | add( ) 将对象添加到集合中。 |
2 | clear( ) 从集合中删除所有对象。 |
3 | contains( ) 如果指定对象是集合内的元素,则返回 true。 |
4 | isEmpty( ) 如果集合中没有元素,则返回 true。 |
5 | iterator( ) 返回集合的 Iterator 对象,可用于检索对象。 |
6 | remove( ) 从集合中删除指定的对象。 |
7 | size( ) 返回集合中的元素数量。 |
示例
以下是解释 CopyOnWriteArraySet 功能的示例 −
import java.util.Iterator; import java.util.concurrent.CopyOnWriteArraySet; public class Tester { public static void main(String args[]) { // 创建数组列表 CopyOnWriteArraySet<Integer> set = new CopyOnWriteArraySet(); System.out.println("Initial size of set: " + set.size()); int count[] = {34, 22,10,60,30,22}; // 将元素添加到数组列表 for(int i = 0; i < 5; i++) { set.add(count[i]); } System.out.println("添加后集合的大小:" + set.size()); // 显示集合 System.out.println("集合的内容:" + set); // 从数组列表中删除元素 set.remove(10); System.out.println("删除后集合的大小:" + set.size()); System.out.println("集合的内容:" + set); try { Iterator<Integer> iterator = set.iterator(); while(iterator.hasNext()) { iterator.remove(); } }catch(UnsupportedOperationException e) { System.out.println("不支持的方法:"); } System.out.println("集合的大小: " + set.size()); } }
将产生以下结果 −
输出
集合的初始大小:0 添加后集合的大小:5 集合的内容:[34, 22, 10, 60, 30] 删除后集合的大小:4 集合的内容:[34, 22, 60, 30] 不支持的方法: 集合的大小:4