- 型パラメータ:
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
メソッドによって返されるイテレータは、フェイルファストです。イテレータの作成後に、イテレータ自体の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()
セット内の各要素についてのイテレータを返します。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) 指定されたコレクションの要素を格納する新規セットを作成します。 デフォルトの負荷係数(0.75)、および指定されたコレクションの要素を格納するのに十分な初期容量により、HashMap
は作成されます。- パラメータ:
c
- 要素がこのセットに配置されるコレクション- 例外:
NullPointerException
- 指定されたコレクションがnullである場合
-
HashSet
public HashSet(int initialCapacity, float loadFactor) 新しい空のセットを作成します。基となるHashMap
インスタンスは指定された初期容量および指定された負荷係数を持ちます。- パラメータ:
initialCapacity
- ハッシュ・マップの初期容量loadFactor
- ハッシュ・マップの負荷係数- 例外:
IllegalArgumentException
- 初期容量がゼロよりも小さい場合、または負荷係数が正でない場合
-
HashSet
public HashSet(int initialCapacity) 新しい空のセットを作成します。基となるHashMap
インスタンスは指定された初期容量およびデフォルトの負荷係数(0.75)を持ちます。- パラメータ:
initialCapacity
- ハッシュ表の初期容量- 例外:
IllegalArgumentException
- 初期容量がゼロよりも小さい場合
-
-
メソッドの詳細
-
iterator
セット内の各要素についてのイテレータを返します。 要素が返されるときに特定の順序はありません。 -
size
public int 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) 指定された要素がこのセットに存在する場合に、要素をセットから削除します。 より正式には、Objects.equals(o, e)
(このセットにこのような要素が含まれている場合)のような要素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
public Object clone()このHashSet
インスタンスのシャロー・コピーを返します。要素自体は複製されません。 -
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
要素がないことを呼出し側が知っている場合にだけ、この特性を利用してコレクションの長さを判断できます。イテレータによって要素が返される順序をコレクションが保証する場合、このメソッドは同じ順序で要素を返さなければなりません。
- 定義:
toArray
、インタフェースCollection<E>
- 定義:
toArray
、インタフェースSet<E>
- オーバーライド:
toArray
、クラスAbstractCollection<E>
- 型パラメータ:
T
- コレクションを格納する配列のコンポーネント型- パラメータ:
a
- 配列が十分な大きさを持つ場合は、このコレクションの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる。- 戻り値:
- コレクションのすべての要素が格納されている配列
-