クラスHashSet<E>
- 型パラメータ:
- E- このセットで保持される要素の型
- すべての実装されたインタフェース:
- Serializable,- Cloneable,- Iterable<E>,- Collection<E>,- Set<E>
- 直系の既知のサブクラス:
- JobStateReasons,- LinkedHashSet
HashMapインスタンス)に支えられたSetインタフェースを実装します。 このクラスでは、セットの反復順序について保証しません。特に、その順序を一定に保つことを保証しません。 このクラスでは、null要素が許可されます。 
 このクラスは、基本操作(add, remove, containsおよびsize)に対して一定の時間パフォーマンスを提供します。ハッシュ関数が要素をバケット間で適切に分散すると仮定します。 このセットを反復するには、HashSetインスタンスのサイズ(要素数)と、バッキングHashMapインスタンス(バケット数)の"容量"の合計に比例した時間が必要です。 したがって、反復処理の性能が重要な場合は、初期容量をあまり高く(負荷係数をあまり低く)設定しないことが非常に重要です。 
 
この実装はsynchronizedされません。 複数のスレッドが並行してハッシュ・セットにアクセスし、それらのスレッドの少なくとも1つがセットを変更する場合には、外部で同期をとる必要があります。 これは通常、セットを自然にカプセル化する一部のオブジェクトでsynchronizedすることによって達成されます。 そのようなオブジェクトが存在しない場合は、Collections.synchronizedSetメソッドを使用してセットを「ラップ」することをお薦めします。 セットが誤ってsynchronizedなしでアクセスされるのを防ぐために、作成時に行うことをお薦めします。 
Set s = Collections.synchronizedSet(new HashSet(...));
このクラスのiteratorメソッドによって返されるイテレータは、fail-fastです: イテレータの作成後にセットが変更された場合、イテレータ独自のremoveメソッドを除き、なんらかの方法でイテレータがConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。 
 
通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、イテレータのフェイルファストの動作を保証することはできません。 フェイルファスト・イテレータは、ベスト・エフォート・ベースでConcurrentModificationExceptionをスローします。 したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。イテレータのフェイルファストの動作はバグを検出するためにのみ使用すべきです。 
 
このクラスは、Java Collections Frameworkのメンバーです。
- 導入されたバージョン:
- 1.2
- 関連項目:
- 
コンストラクタのサマリーコンストラクタコンストラクタ説明HashSet()新しい空のセットを構築します。バッキングHashMapインスタンスには、デフォルトの初期容量(16)およびロード・ファクタ(0.75)があります。HashSet(int initialCapacity) 新しい空のセットを作成します。バッキングHashMapインスタンスには、指定された初期容量とデフォルトのロード・ファクタ(0.75)があります。HashSet(int initialCapacity, float loadFactor) 新しい空のセットを構築します。バッキングHashMapインスタンスには、指定された初期容量と指定された負荷係数があります。HashSet(Collection<? extends E> c) 指定されたコレクションの要素を格納する新規セットを作成します。
- 
メソッドのサマリー修飾子と型メソッド説明boolean指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。voidclear()すべての要素をセットから削除します。clone()このHashSetインスタンスのシャロー・コピーを返します: 要素自体はクローンされません。boolean指定された要素がこのセットに含まれている場合にtrueを返します。booleanisEmpty()このセットに要素が1つも含まれていない場合にtrueを返します。iterator()セット内の各要素についてのイテレータを返します。static <T> HashSet<T> newHashSet(int numElements) 予想される要素数に適した新しい空のHashSetを作成します。boolean指定された要素がこのセットに存在する場合に、要素をセットから削除します。intsize()セット内の要素数(そのカーディナリティ)を返します。このセット内の要素に対する遅延バインディングおよびフェイルファストSpliteratorを作成します。Object[]toArray()このコレクションの要素がすべて格納されている配列を返します。<T> T[]toArray(T[] a) このコレクション内のすべての要素を保持する配列を返します。返される配列の実行時の型は、指定された配列の型です。クラスjava.util.AbstractSetで宣言されたメソッドequals, hashCode, removeAllクラスjava.util.AbstractCollectionで宣言されたメソッドaddAll, containsAll, retainAll, toArray, toArray, toStringインタフェースjava.util.Collectionで宣言されたメソッドparallelStream, removeIf, stream, toArray
- 
コンストラクタの詳細- 
HashSetpublic HashSet()新しい空のセットを構築します。バッキングHashMapインスタンスには、デフォルトの初期容量(16)およびロード・ファクタ(0.75)があります。
- 
HashSetpublic HashSet(Collection<? extends E> c) 指定されたコレクションの要素を格納する新規セットを作成します。HashMapは、デフォルトのロード・ファクタ(0.75)と、指定したコレクション内の要素を含めるのに十分な初期容量で作成されます。- パラメータ:
- c- 要素がこのセットに配置されるコレクション
- 例外:
- NullPointerException- 指定されたコレクションがnullである場合
 
- 
HashSetpublic HashSet(int initialCapacity, float loadFactor) 新しい空のセットを構築します。バッキングHashMapインスタンスには、指定された初期容量と指定された負荷係数があります。- APIのノート:
- 予想される要素数に対応する初期容量を持つHashSetを作成するには、newHashSetを使用します。
- パラメータ:
- initialCapacity- ハッシュ・マップの初期容量
- loadFactor- ハッシュ・マップの負荷係数
- 例外:
- IllegalArgumentException- 初期容量がゼロよりも小さい場合、または負荷係数が正でない場合
 
- 
HashSetpublic HashSet(int initialCapacity) 新しい空のセットを作成します。バッキングHashMapインスタンスには、指定された初期容量とデフォルトのロード・ファクタ(0.75)があります。- APIのノート:
- 予想される要素数に対応する初期容量を持つHashSetを作成するには、newHashSetを使用します。
- パラメータ:
- initialCapacity- ハッシュ表の初期容量
- 例外:
- IllegalArgumentException- 初期容量がゼロよりも小さい場合
 
 
- 
- 
メソッドの詳細- 
iterator
- 
size
- 
isEmptypublic boolean isEmpty()このセットに要素が1つも含まれていない場合にtrueを返します。- 定義:
- isEmpty、インタフェース- Collection<E>
- 定義:
- isEmpty、インタフェース- Set<E>
- オーバーライド:
- isEmpty、クラス- AbstractCollection<E>
- 戻り値:
- セットに要素がない場合はtrue
 
- 
containspublic boolean contains(Object o) 指定された要素がこのセットに含まれている場合にtrueを返します。 より正式には、このセットにObjects.equals(o, e)などの要素eが含まれている場合のみ、trueを返します。- 定義:
- contains、インタフェース- Collection<E>
- 定義:
- contains、インタフェース- Set<E>
- オーバーライド:
- contains、クラス- AbstractCollection<E>
- パラメータ:
- o- このセット内にあるかどうかが判定される要素
- 戻り値:
- 指定された要素がこのセットに含まれている場合はtrue
 
- 
addpublic boolean add(E e) 指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。 より正式には、このセットにObjects.equals(e, e2)などの要素e2が含まれていない場合は、指定された要素eをこのセットに追加します。 このセット内にすでにその要素が含まれている場合、この呼出しはセットを変更せずにfalseを返します。- 定義:
- add、インタフェース- Collection<E>
- 定義:
- add、インタフェース- Set<E>
- オーバーライド:
- add、クラス- AbstractCollection<E>
- パラメータ:
- e- このセットに追加される要素
- 戻り値:
- このセット内に、指定された要素がなかった場合はtrue
 
- 
removepublic boolean remove(Object o) 指定された要素がこのセットに存在する場合に、要素をセットから削除します。 さらに正式には、要素eを削除して、このセットにそのような要素が含まれている場合は、Objects.equals(o, e)を削除します。 その要素がこのセットに含まれていた場合、つまり、呼出しの結果としてこのセットが変更された場合はtrueを返します。 呼出しが復帰したあとは、このセットはその要素を持っていません。- 定義:
- remove、インタフェース- Collection<E>
- 定義:
- remove、インタフェース- Set<E>
- オーバーライド:
- remove、クラス- AbstractCollection<E>
- パラメータ:
- o- このセットから削除されるオブジェクト(そのオブジェクトが存在する場合)
- 戻り値:
- 指定された要素がセットに含まれている場合はtrue
 
- 
clearpublic void clear()すべての要素をセットから削除します。 この呼出しが戻ると、セットは空になります。- 定義:
- clear、インタフェース- Collection<E>
- 定義:
- clear、インタフェース- Set<E>
- オーバーライド:
- clear、クラス- AbstractCollection<E>
 
- 
clone
- 
spliteratorpublic Spliterator<E> spliterator()このセット内の要素に対する遅延バインディングおよびフェイルファストSpliteratorを作成します。Spliteratorは、Spliterator.SIZEDおよびSpliterator.DISTINCTを報告します。 オーバーライドする実装は、追加の特性値の報告をドキュメント化する必要があります。- 定義:
- spliterator、インタフェース- Collection<E>
- 定義:
- spliterator、インタフェース- Iterable<E>
- 定義:
- spliterator、インタフェース- Set<E>
- 戻り値:
- このセット内の要素に対するSpliterator
- 導入されたバージョン:
- 1.8
 
- 
toArraypublic Object[] toArray()次のクラスからコピーされた説明:AbstractCollectionこのコレクションの要素がすべて格納されている配列を返します。 イテレータによって要素が返される順序をコレクションが保証する場合、このメソッドは同じ順序で要素を返さなければなりません。 返される配列の「ランタイム・コンポーネント・タイプ」はObjectです。返される配列への参照をコレクションが維持しないという点で、この配列は安全です。 つまり、このメソッドは、コレクションが配列に連動している場合でも新しい配列を割り当てます。 このため、呼出し側は、返された配列を自由に変更できます。 - 定義:
- toArray、インタフェース- Collection<E>
- 定義:
- toArray、インタフェース- Set<E>
- オーバーライド:
- toArray、クラス- AbstractCollection<E>
- 戻り値:
- 「ランタイム・コンポーネント・タイプ」がObjectの配列。このコレクションのすべての要素を含む
 
- 
toArraypublic <T> T[] toArray(T[] a) 次のクラスからコピーされた説明:AbstractCollectionこのコレクション内のすべての要素を保持する配列を返します。返される配列の実行時の型は、指定された配列の型です。 コレクションが指定された配列に収まる場合は、その中に返されます。 そうでない場合は、指定された配列の実行時の型とコレクションのサイズを持つ新しい配列が割り当てられます。このコレクションが(つまり、配列にはこのコレクションより多くの要素があります)の余裕のある指定された配列に収まる場合、コレクションの終端の直後の配列の要素は nullに設定されます。 (これは、このコレクションにnull要素が含まれていないことをコール元が認識している場合に、このコレクションonlyの長さを決定する際に役立ちます。)イテレータによって要素が返される順序をコレクションが保証する場合、このメソッドは同じ順序で要素を返さなければなりません。 - 定義:
- toArray、インタフェース- Collection<E>
- 定義:
- toArray、インタフェース- Set<E>
- オーバーライド:
- toArray、クラス- AbstractCollection<E>
- 型パラメータ:
- T- コレクションを格納する配列のコンポーネント型
- パラメータ:
- a- 配列が十分な大きさを持つ場合は、このコレクションの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる。
- 戻り値:
- コレクションのすべての要素が格納されている配列
 
- 
newHashSetpublic static <T> HashSet<T> newHashSet(int numElements) 予想される要素数に適した新しい空のHashSetを作成します。 返されるセットではデフォルトのロード係数0.75が使用され、初期容量は通常十分に大きいため、セットのサイズを変更せずに必要なファクタ数を追加できます。- 型パラメータ:
- T- 新しいセットによって保持される要素のタイプ
- パラメータ:
- numElements- 予想される要素数
- 戻り値:
- 新しく作成されたセット
- 例外:
- IllegalArgumentException- numElementsが負の場合
- 導入されたバージョン:
- 19
 
 
-