クラス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
指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。void
clear()
すべての要素をセットから削除します。clone()
このHashSet
インスタンスのシャロー・コピーを返します: 要素自体はクローンされません。boolean
指定された要素がこのセットに含まれている場合にtrue
を返します。boolean
isEmpty()
このセットに要素が1つも含まれていない場合にtrue
を返します。iterator()
セット内の各要素についてのイテレータを返します。static <T> HashSet
<T> newHashSet
(int numElements) 予想される要素数に適した新しい空のHashSetを作成します。boolean
指定された要素がこのセットに存在する場合に、要素をセットから削除します。int
size()
セット内の要素数(そのカーディナリティ)を返します。このセット内の要素に対する遅延バインディングおよびフェイルファスト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
-
コンストラクタの詳細
-
HashSet
public HashSet()新しい空のセットを構築します。バッキングHashMap
インスタンスには、デフォルトの初期容量(16)およびロード・ファクタ(0.75)があります。 -
HashSet
public HashSet(Collection<? extends E> c) 指定されたコレクションの要素を格納する新規セットを作成します。HashMap
は、デフォルトのロード・ファクタ(0.75)と、指定したコレクション内の要素を含めるのに十分な初期容量で作成されます。- パラメータ:
c
- 要素がこのセットに配置されるコレクション- 例外:
NullPointerException
- 指定されたコレクションがnullである場合
-
HashSet
public HashSet(int initialCapacity, float loadFactor) 新しい空のセットを構築します。バッキングHashMap
インスタンスには、指定された初期容量と指定された負荷係数があります。- APIのノート:
- 予想される要素数に対応する初期容量を持つ
HashSet
を作成するには、newHashSet
を使用します。 - パラメータ:
initialCapacity
- ハッシュ・マップの初期容量loadFactor
- ハッシュ・マップの負荷係数- 例外:
IllegalArgumentException
- 初期容量がゼロよりも小さい場合、または負荷係数が正でない場合
-
HashSet
public HashSet(int initialCapacity) 新しい空のセットを作成します。バッキングHashMap
インスタンスには、指定された初期容量とデフォルトのロード・ファクタ(0.75)があります。- APIのノート:
- 予想される要素数に対応する初期容量を持つ
HashSet
を作成するには、newHashSet
を使用します。 - パラメータ:
initialCapacity
- ハッシュ表の初期容量- 例外:
IllegalArgumentException
- 初期容量がゼロよりも小さい場合
-
-
メソッドの詳細
-
iterator
-
size
-
isEmpty
public boolean isEmpty()このセットに要素が1つも含まれていない場合にtrue
を返します。- 定義:
isEmpty
、インタフェースCollection<E>
- 定義:
isEmpty
、インタフェースSet<E>
- オーバーライド:
isEmpty
、クラスAbstractCollection<E>
- 戻り値:
- セットに要素がない場合は
true
-
contains
public boolean contains(Object o) 指定された要素がこのセットに含まれている場合にtrue
を返します。 より正式には、このセットにObjects.equals(o, e)
などの要素e
が含まれている場合のみ、true
を返します。- 定義:
contains
、インタフェースCollection<E>
- 定義:
contains
、インタフェースSet<E>
- オーバーライド:
contains
、クラスAbstractCollection<E>
- パラメータ:
o
- このセット内にあるかどうかが判定される要素- 戻り値:
- 指定された要素がこのセットに含まれている場合は
true
-
add
public boolean add(E e) 指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。 より正式には、このセットにObjects.equals(e, e2)
などの要素e2
が含まれていない場合は、指定された要素e
をこのセットに追加します。 このセット内にすでにその要素が含まれている場合、この呼出しはセットを変更せずにfalse
を返します。- 定義:
add
、インタフェースCollection<E>
- 定義:
add
、インタフェースSet<E>
- オーバーライド:
add
、クラスAbstractCollection<E>
- パラメータ:
e
- このセットに追加される要素- 戻り値:
- このセット内に、指定された要素がなかった場合は
true
-
remove
public boolean remove(Object o) 指定された要素がこのセットに存在する場合に、要素をセットから削除します。 さらに正式には、要素e
を削除して、このセットにそのような要素が含まれている場合は、Objects.equals(o, e)
を削除します。 その要素がこのセットに含まれていた場合、つまり、呼出しの結果としてこのセットが変更された場合はtrue
を返します。 呼出しが復帰したあとは、このセットはその要素を持っていません。- 定義:
remove
、インタフェースCollection<E>
- 定義:
remove
、インタフェースSet<E>
- オーバーライド:
remove
、クラスAbstractCollection<E>
- パラメータ:
o
- このセットから削除されるオブジェクト(そのオブジェクトが存在する場合)- 戻り値:
- 指定された要素がセットに含まれている場合は
true
-
clear
public void clear()すべての要素をセットから削除します。 この呼出しが戻ると、セットは空になります。- 定義:
clear
、インタフェースCollection<E>
- 定義:
clear
、インタフェースSet<E>
- オーバーライド:
clear
、クラスAbstractCollection<E>
-
clone
-
spliterator
public Spliterator<E> spliterator()このセット内の要素に対する遅延バインディングおよびフェイルファストSpliterator
を作成します。Spliterator
は、Spliterator.SIZED
およびSpliterator.DISTINCT
を報告します。 オーバーライドする実装は、追加の特性値の報告をドキュメント化する必要があります。- 定義:
spliterator
、インタフェースCollection<E>
- 定義:
spliterator
、インタフェースIterable<E>
- 定義:
spliterator
、インタフェースSet<E>
- 戻り値:
- このセット内の要素に対する
Spliterator
- 導入されたバージョン:
- 1.8
-
toArray
public Object[] toArray()次のクラスからコピーされた説明:AbstractCollection
このコレクションの要素がすべて格納されている配列を返します。 イテレータによって要素が返される順序をコレクションが保証する場合、このメソッドは同じ順序で要素を返さなければなりません。 返される配列の「ランタイム・コンポーネント・タイプ」はObject
です。返される配列への参照をコレクションが維持しないという点で、この配列は安全です。 つまり、このメソッドは、コレクションが配列に連動している場合でも新しい配列を割り当てます。 このため、呼出し側は、返された配列を自由に変更できます。
- 定義:
toArray
、インタフェースCollection<E>
- 定義:
toArray
、インタフェースSet<E>
- オーバーライド:
toArray
、クラスAbstractCollection<E>
- 戻り値:
- 「ランタイム・コンポーネント・タイプ」が
Object
の配列。このコレクションのすべての要素を含む
-
toArray
public <T> T[] toArray(T[] a) 次のクラスからコピーされた説明:AbstractCollection
このコレクション内のすべての要素を保持する配列を返します。返される配列の実行時の型は、指定された配列の型です。 コレクションが指定された配列に収まる場合は、その中に返されます。 そうでない場合は、指定された配列の実行時の型とコレクションのサイズを持つ新しい配列が割り当てられます。このコレクションが(つまり、配列にはこのコレクションより多くの要素があります)の余裕のある指定された配列に収まる場合、コレクションの終端の直後の配列の要素は
null
に設定されます。 (これは、このコレクションにnull
要素が含まれていないことをコール元が認識している場合に、このコレクションonlyの長さを決定する際に役立ちます。)イテレータによって要素が返される順序をコレクションが保証する場合、このメソッドは同じ順序で要素を返さなければなりません。
- 定義:
toArray
、インタフェースCollection<E>
- 定義:
toArray
、インタフェースSet<E>
- オーバーライド:
toArray
、クラスAbstractCollection<E>
- 型パラメータ:
T
- コレクションを格納する配列のコンポーネント型- パラメータ:
a
- 配列が十分な大きさを持つ場合は、このコレクションの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる。- 戻り値:
- コレクションのすべての要素が格納されている配列
-
newHashSet
public static <T> HashSet<T> newHashSet(int numElements) 予想される要素数に適した新しい空のHashSetを作成します。 返されるセットではデフォルトのロード係数0.75が使用され、初期容量は通常十分に大きいため、セットのサイズを変更せずに必要なファクタ数を追加できます。- 型パラメータ:
T
- 新しいセットによって保持される要素のタイプ- パラメータ:
numElements
- 予想される要素数- 戻り値:
- 新しく作成されたセット
- 例外:
IllegalArgumentException
- numElementsが負の場合- 導入されたバージョン:
- 19
-