E - このコレクション内に保持される要素の型public class CopyOnWriteArraySet<E> extends AbstractSet<E> implements Serializable
CopyOnWriteArrayListをすべてのオペレーションで使用するSetです。 このため、同じ基本プロパティが共有されます。 
 add、set、removeなど)は、通常、基になる配列全体のコピーが必要になるため、負荷が大きい。
  removeオペレーションをサポートしていない。
  使用例。 次のコード例では、copy-on-writeセットを使用して、状態の更新時に特定のアクションを実行する一連の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, 直列化された形式| コンストラクタ | 説明 | 
|---|---|
| CopyOnWriteArraySet() | 空のセットを作成します。 | 
| CopyOnWriteArraySet(Collection<? extends E> c) | 指定されたコレクションの要素すべてを含むセットを作成します。 | 
| 修飾子と型 | メソッド | 説明 | 
|---|---|---|
| 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() | このセットに要素が1つも含まれていない場合に 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) | セット内のすべての要素を格納している配列を返します。返される配列の実行時の型は、指定された配列の型になります。 | 
hashCodetoStringparallelStream, streampublic CopyOnWriteArraySet()
public CopyOnWriteArraySet(Collection<? extends E> c)
c - 初期状態で含む要素のコレクションNullPointerException - 指定されたコレクションがnullである場合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>truepublic boolean contains(Object o)
trueを返します。 つまり、このセットに、(o==null ? e==null : o.equals(e))となる要素eが含まれている場合にのみtrueを返します。 contains、インタフェースCollection<E>contains、インタフェースSet<E>contains、クラスAbstractCollection<E>o - このセット内にあるかどうかが判定される要素truepublic Object[] toArray()
返される配列への参照をセットが維持しないという点で、この配列は安全です。 つまり、このメソッドは、セットが配列に連動している場合でも新しい配列を割り当てます。 このため、呼出し側は、返された配列を自由に変更できます。
このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。
toArray、インタフェースCollection<E>toArray、インタフェースSet<E>toArray、クラスAbstractCollection<E>public <T> T[] toArray(T[] a)
このセットが指定された配列に収まり、その配列にさらに余裕がある場合(つまり、配列がセットより多くの要素を持つ場合)、その配列内でセットの終端よりあとの要素はnullに設定されます。 このセットにnull要素がないことを呼出し側が知っている場合にだけ、この特性を利用してこのセットの長さを判断できます。 
 
イテレータによって要素が返される順序をセットが保証する場合、このメソッドは同じ順序で要素を返さなければいけません。
toArray()メソッドと同じように、このメソッドは、配列ベースのAPIとコレクションベースの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 - 指定された配列がnullである場合public void clear()
clear、インタフェースCollection<E>clear、インタフェースSet<E>clear、クラスAbstractCollection<E>public boolean remove(Object o)
(o==null ? e==null : o.equals(e))となる要素eが含まれている場合は、そのような要素を削除します。 その要素がこのセットに含まれていた場合、つまり、呼出しの結果としてこのセットが変更された場合はtrueを返します。 呼出しが復帰したあとは、このセットはその要素を持っていません。 remove、インタフェースCollection<E>remove、インタフェースSet<E>remove、クラスAbstractCollection<E>o - このセットから削除されるオブジェクト(そのオブジェクトが存在する場合)truepublic boolean add(E e)
(e==null ? e2==null : e.equals(e2))となる要素e2がない場合は、指定された要素eをこのセットに追加します。 このセット内にすでにその要素が含まれている場合、この呼出しではセットを変更せずにfalseを返します。 add、インタフェースCollection<E>add、インタフェースSet<E>add、クラスAbstractCollection<E>e - このセットに追加される要素truepublic boolean containsAll(Collection<?> c)
trueを返します。 指定されたコレクションもセットである場合、指定されたセットがこのセットのサブセットであれば、このメソッドはtrueを返します。 containsAll、インタフェースCollection<E>containsAll、インタフェースSet<E>containsAll、クラスAbstractCollection<E>c - このセットに含まれているかどうかがチェックされるコレクションtrueNullPointerException - 指定されたコレクションがnullである場合contains(Object)public boolean addAll(Collection<? extends E> c)
addAllオペレーションは、その値が2つのセットの和集合になるようにこのセットを効率的に変更します。 オペレーションの進行中に、指定されたコレクションが変更された場合の、このオペレーションの動作は定義されていません。 addAll、インタフェースCollection<E>addAll、インタフェースSet<E>addAll、クラスAbstractCollection<E>c - このセットに追加される要素を含むコレクションtrueNullPointerException - 指定されたコレクションがnullである場合add(Object)public boolean removeAll(Collection<?> c)
removeAll、インタフェースCollection<E>removeAll、インタフェースSet<E>removeAll、クラスAbstractSet<E>c - このセットから削除される要素を含むコレクションtrueClassCastException - このセットのある要素のクラスが、指定されたコレクションと互換でない場合(オプション)NullPointerException - このセットにnull要素が含まれており、指定されたコレクションがnull要素を許可しない場合(オプション)、または指定されたコレクションがnullの場合remove(Object)public boolean retainAll(Collection<?> c)
retainAll、インタフェースCollection<E>retainAll、インタフェースSet<E>retainAll、クラスAbstractCollection<E>c - このセットで保持される要素を含むコレクションtrueClassCastException - このセットのある要素のクラスが、指定されたコレクションと互換でない場合(オプション)NullPointerException - このセットにnull要素が含まれており、指定されたコレクションがnull要素を許可しない場合(オプション)、または指定されたコレクションがnullの場合remove(Object)public Iterator<E> iterator()
返されるイテレータは、イテレータの構築時のセット状態のスナップショットを提供します。 イテレータのトラバーサル中に同期化は必要ありません。 イテレータは、removeメソッドをサポートしません。 
public boolean equals(Object o)
Setでもあり、指定されたセットでiteratorによって返された要素が、このセットでイテレータによって返された要素と同じである場合はtrueを返します。 つまり、この2つのイテレータは、同じ数の要素を返し、指定されたセットに対してイテレータによって返された要素e1ごとに、このセットでイテレータによって返された(e1==null ? e2==null : e1.equals(e2))となる要素e2が存在する場合に同じ要素を返すと見なされます。 equals、インタフェースCollection<E>equals、インタフェースSet<E>equals、クラスAbstractSet<E>o - このセットと等しいかどうかが比較されるオブジェクトtrueObject.hashCode()、HashMappublic boolean removeIf(Predicate<? super E> filter)
CollectionremoveIf、インタフェースCollection<E>filter - 削除される要素に対してtrueを返す述語truepublic void forEach(Consumer<? super E> action)
IterableIterableの各要素に対して指定されたアクションを、すべての要素が処理されるか、アクションが例外をスローするまで実行します。 実装クラスで指定されない場合は、反復の順序でアクションが実行されます(反復順序が指定されている場合)。 アクションによってスローされた例外は、呼出し側に中継されます。 public Spliterator<E> spliterator()
Spliteratorを、これらの要素が追加された順序で返します。
 Spliteratorは、Spliterator.IMMUTABLE、Spliterator.DISTINCT、Spliterator.SIZEDおよびSpliterator.SUBSIZEDを報告します。
 
スプリッテレータは、スプリッテレータが構築されたときのセット状態のスナップショットを提供します。 スプリッテレータの操作中に同期化は必要ありません。
spliterator、インタフェースIterable<E>spliterator、インタフェースCollection<E>spliterator、インタフェースSet<E>Spliterator バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。 
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved.  Use is subject to license terms.  Documentation Redistribution Policyも参照してください。