E - 保存在此集合中的元素的类型 
       public class CopyOnWriteArraySet<E> extends AbstractSet<E> implements Serializable
Set使用内部CopyOnWriteArrayList其所有操作。 
       因此,它具有相同的基本属性: 
       add , set , remove ,等)是昂贵的,因为它们通常意味着复制整个底层数组。 remove操作。 样品用法。 以下代码草图使用写时复制集来维护在状态更新时执行某些操作的一组Handler对象。
   class Handler { void handle(); ... } class X { private final CopyOnWriteArraySet<Handler> handlers = new CopyOnWriteArraySet<Handler>(); public void addHandler(Handler h) { handlers.add(h); } private long internalState; private synchronized void changeState() { internalState = ...; } public void update() { changeState(); for (Handler handler : handlers) handler.handle(); } }  
       这个班是Java Collections Framework的成员。
CopyOnWriteArrayList , Serialized Form 
       | Constructor and Description | 
|---|
| CopyOnWriteArraySet()
              创建一个空集。 
             | 
| CopyOnWriteArraySet(Collection<? extends E> c)
              创建一个包含指定集合的所有元素的集合。 
             | 
| Modifier and Type | Method and Description | 
|---|---|
| boolean | add(E e)
              将指定的元素添加到此集合(如果尚未存在)。 
             | 
| boolean | addAll(Collection<? extends E> c)
              将指定集合中的所有元素添加到此集合(如果它们尚未存在)。 
             | 
| void | clear()
              从此集合中删除所有元素。 
             | 
| boolean | contains(Object o)
              如果此集合包含指定的元素,则返回 
              true。 | 
| boolean | containsAll(Collection<?> c)
              返回 
              true如果此集合包含所有指定集合的元素。 | 
| boolean | equals(Object o)
              将指定的对象与此集合进行比较以实现相等。 
             | 
| void | forEach(Consumer<? super E> action)
              执行 
              Iterable的每个元素的给定操作,直到所有元素都被处理或者动作引发异常。 | 
| boolean | isEmpty()
              如果此集合不包含元素,则返回 
              true。 | 
| Iterator<E> | iterator()
              按照添加这些元素的顺序返回此集合中包含的元素的迭代器。 
             | 
| boolean | remove(Object o)
              如果存在,则从该集合中删除指定的元素。 
             | 
| boolean | removeAll(Collection<?> c)
              从此集合中删除指定集合中包含的所有元素。 
             | 
| boolean | removeIf(Predicate<? super E> filter)
              删除满足给定谓词的此集合的所有元素。 
             | 
| boolean | retainAll(Collection<?> c)
              仅保留该集合中包含在指定集合中的元素。 
             | 
| int | size()
              返回此集合中的元素数。 
             | 
| Spliterator<E> | spliterator() 
             按照添加这些元素的顺序返回此集合中元素的 Spliterator。 | 
| Object[] | toArray()
              返回一个包含此集合中所有元素的数组。 
             | 
| <T> T[] | toArray(T[] a) 
             返回一个包含此集合中所有元素的数组; 
             返回的数组的运行时类型是指定数组的运行时类型。 
             | 
hashCodetoStringclone, finalize, getClass, notify, notifyAll, wait, wait, waitparallelStream, streampublic CopyOnWriteArraySet()
public CopyOnWriteArraySet(Collection<? extends E> c)
c - 最初包含的元素的集合 
           NullPointerException - 如果指定的集合为空 
           public int size()
size在界面 
            Collection<E> 
           size在接口 
            Set<E> 
           size在类别 
            AbstractCollection<E> 
           public boolean isEmpty()
true 。 
          isEmpty在接口 
            Collection<E> 
           isEmpty在界面 
            Set<E> 
           isEmpty在类别 
            AbstractCollection<E> 
           true如果此集合不包含元素 
           public boolean contains(Object o)
true 。 
           更正式地,返回true当且仅当这个集合包含一个元素e这样(o==null ? e==null : o.equals(e)) 。 
          contains在界面 
            Collection<E> 
           contains在界面 
            Set<E> 
           contains在类别 
            AbstractCollection<E> 
           o - 要在此集合中存在的元素将被测试 
           true如果此集合包含指定的元素 
           public Object[] toArray()
返回的数组将是“安全的”,因为该集合不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组,即使这个数组是由数组支持的)。 因此,调用者可以自由地修改返回的数组。
此方法充当基于阵列和基于集合的API之间的桥梁。
toArray在界面 
            Collection<E> 
           toArray在界面 
            Set<E> 
           toArray在类别 
            AbstractCollection<E> 
           public <T> T[] toArray(T[] a)
 如果这个集合适合指定的数组,有空余的空间(即,该数组的元素多于此集合),紧随该集合结束后的数组中的元素设置为null 。 (这仅在调用者知道此集合不包含任何空元素时才可用于确定此集合的长度。) 
如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。
 像toArray()方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确地控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本。 
 假设x是一个已知只包含字符串的集合。 下面的代码可用于所述一组转储到一个新分配的阵列String : 
   String[] y = x.toArray(new String[0]);  
           请注意, toArray(new Object[0])的功能与toArray() 。 
          toArray在接口 
            Collection<E> 
           toArray在接口 
            Set<E> 
           toArray在类别 
            AbstractCollection<E> 
           T - 包含集合的数组的运行时类型 
           a - 要存储此集合的元素的阵列,如果它足够大; 
            否则,为此目的分配相同运行时类型的新数组。 
           ArrayStoreException - 如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型 
           NullPointerException - 如果指定的数组为空 
           public void clear()
clear在接口 
            Collection<E> 
           clear在界面 
            Set<E> 
           clear在类别 
            AbstractCollection<E> 
           public boolean remove(Object o)
e ,使(o==null ? e==null : o.equals(e)) ,如果这个集合包含这样一个元素。 
           如果此集合包含元素(或等效地,如果该集合由于调用而更改),则返回true 。 
           (一旦调用返回,此集合将不包含该元素。) 
          remove在界面 
            Collection<E> 
           remove在界面 
            Set<E> 
           remove在类别 
            AbstractCollection<E> 
           o - 要从此集合中删除的对象(如果存在) 
           true如果这个集合包含指定的元素 
           public boolean add(E e)
e这一套如果集合不包含元素e2这样(e==null ? e2==null : e.equals(e2))。 
           如果该集合已经包含该元素,则该呼叫将保持不变,并返回false 。 
          add在界面 
            Collection<E> 
           add在界面 
            Set<E> 
           add在类别 
            AbstractCollection<E> 
           e - 要添加到此集合的元素 
           true如果此集合尚未包含指定的元素 
           public boolean containsAll(Collection<?> c)
true如果此集合包含所有指定集合的元素。 
           如果指定的集合也是一个集合,如果它是该集合的子集 ,则此方法返回true 。 
          containsAll在界面 
            Collection<E> 
           containsAll在界面 
            Set<E> 
           containsAll在 
            AbstractCollection<E> 
           c - 要在此集合中检查收集的集合 
           true如果此集合包含指定集合的所有元素 
           NullPointerException - 如果指定的集合为空 
           contains(Object) 
           public boolean addAll(Collection<? extends E> c)
addAll ,这样它的值是两组的联合操作实际修改此设置。 
           如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。 
          addAll在接口 
            Collection<E> 
           addAll在界面 
            Set<E> 
           addAll中的 
            AbstractCollection<E> 
           c - 包含要添加到此集合的元素的集合 
           true如果此设置由于呼叫而更改 
           NullPointerException - 如果指定的集合为空 
           add(Object) 
           public boolean removeAll(Collection<?> c)
removeAll在界面 
            Collection<E> 
           removeAll在界面 
            Set<E> 
           removeAll在类别 
            AbstractSet<E> 
           c - 包含要从此集合中删除的元素的集合 
           true如果此设置由于呼叫而更改 
           ClassCastException - 如果此集合的元素的类与指定的集合不兼容(可选) 
           NullPointerException - 如果此集合包含空元素,并且指定的集合不允许空元素(可选),或者如果指定的集合为空 
           remove(Object) 
           public boolean retainAll(Collection<?> c)
retainAll在接口 
            Collection<E> 
           retainAll在界面 
            Set<E> 
           retainAll在类别 
            AbstractCollection<E> 
           c - 包含要保留在此集合中的元素的集合 
           true如果此设置由于呼叫而更改 
           ClassCastException - 如果此集合的元素的类与指定的集合不兼容(可选) 
           NullPointerException - 如果此集合包含空元素,并且指定的集合不允许空元素(可选),或者如果指定的集合为空 
           remove(Object) 
           public Iterator<E> iterator()
 返回的迭代器在构建迭代器时提供集合的状态的快照。 遍历迭代器时不需要同步。 该迭代器不支持remove方法。 
public boolean equals(Object o)
true ,或者如果它也是Set ,并且iterator在指定集上返回的元素与迭代器在该集合上返回的元素相同。 
           更正式地,如果两个迭代器返回相同数量的元素,并且对于迭代器在指定集合上返回的每个元素e1 ,那么这两个迭代器被认为返回相同的元素,迭代器在该集合上返回的元素e2使得(e1==null ? e2==null : e1.equals(e2)) 。 
          equals在接口 
            Collection<E> 
           equals在界面 
            Set<E> 
           equals在 
            AbstractSet<E> 
           o - 要与该集合相等的对象 
           true如果指定的对象等于此集合 
           Object.hashCode() , HashMap 
           public boolean removeIf(Predicate<? super E> filter)
Collection复制 
          removeIf在界面 
            Collection<E> 
           filter - 一个谓词,为要删除的元素返回 
            true 
           true如果有任何元素被删除 
           public void forEach(Consumer<? super E> action)
Iterable复制 
          Iterable的每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。 
           除非实现类另有规定,否则按照迭代的顺序执行操作(如果指定了迭代顺序)。 
           动作抛出的异常被转发给呼叫者。 
          public Spliterator<E> spliterator()
Spliterator 。 
            该Spliterator报告Spliterator.IMMUTABLE , Spliterator.DISTINCT , Spliterator.SIZED和Spliterator.SUBSIZED 。 
拼接器在构建拼接器时提供该集合的状态的快照。 在拼接器上操作时不需要同步。
spliterator在界面 
            Iterable<E> 
           spliterator在界面 
            Collection<E> 
           spliterator在接口 
            Set<E> 
           Spliterator在这个集合中的元素 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.