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

相关文章