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( ) 返回集合的 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP