Java 中的 CopyOnWriteArraySet 类
类声明
public class CopyOnWriteArraySet<E> extends AbstractSet<E> implements Serializable
CopyOnWriteArraySet 类在内部使用 CopyOnWriteArrayList 来执行其所有操作,因此具有 CopyOnWriteArrayList 的基本属性。
CopyOnWriteArraySet 是线程安全的。
CopyOnWriteArraySet 应该用于基于线程的环境,在这些环境中读取操作非常频繁,而更新操作很少。
CopyOnWriteArraySet 的迭代器永远不会抛出 ConcurrentModificationException。
对 CopyOnWriteArraySet 进行任何类型的修改都不会在迭代器创建后反映在迭代过程中。
在迭代期间不支持 Set 修改方法,如 remove、set 和 add。此方法将抛出 UnsupportedOperationException。
CopyOnWriteArraySet 方法
以下是 CopyOnWriteArraySet 类中可用的一些重要方法。
| 序号 | 方法及描述 |
|---|---|
| 1 | add( ) 将对象添加到集合中。 |
| 2 | clear( ) 从集合中移除所有对象。 |
| 3 | contains( ) 如果指定对象是集合中的元素,则返回 true。 |
| 4 | isEmpty( ) 如果集合中没有元素,则返回 true。 |
| 5 | iterator( ) 返回集合的迭代器对象,该对象可用于检索对象。 |
| 6 | remove( ) 从集合中移除指定的对象。 |
| 7 | size( ) 返回集合中元素的数量。 |
示例
以下是一个解释 CopyOnWriteArraySet 功能的示例:
import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArraySet;
public class Tester {
public static void main(String args[]) {
// create an array list
CopyOnWriteArraySet<Integer> set = new CopyOnWriteArraySet();
System.out.println("Initial size of set: " + set.size());
int count[] = {34, 22,10,60,30,22};
// add elements to the array list
for(int i = 0; i < 5; i++) {
set.add(count[i]);
}
System.out.println("Size of set after additions: " + set.size());
// display the set
System.out.println("Contents of set: " + set);
// Remove elements from the array list
set.remove(10);
System.out.println("Size of set after deletion: " + set.size());
System.out.println("Contents of set: " + set);
try {
Iterator<Integer> iterator = set.iterator();
while(iterator.hasNext()) {
iterator.remove();
}
}catch(UnsupportedOperationException e) {
System.out.println("Method not supported:");
}
System.out.println("Size of set: " + set.size());
}
}这将产生以下结果:
输出
Initial size of set: 0 Size of set after additions: 5 Contents of set: [34, 22, 10, 60, 30] Size of set after deletion: 4 Contents of set: [34, 22, 60, 30] Method not supported: Size of set: 4
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP