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

更新於: 2020-06-19

549 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.