- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.HashSet<E>
-
- 型パラメータ:
E
- このセットで保持される要素の型
- すべての実装されたインタフェース:
Serializable
,Cloneable
,Iterable<E>
,Collection<E>
,Set<E>
- 直系の既知のサブクラス:
JobStateReasons
,LinkedHashSet
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
このクラスは、ハッシュ表(実際には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
- 関連項目:
Collection
,Set
,TreeSet
,HashMap
, 直列化された形式
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 HashSet()
新しい空のセットを作成します。基となるHashMap
インスタンスはデフォルトの初期容量(16)および負荷係数(0.75)を持ちます。HashSet(int initialCapacity)
新しい空のセットを作成します。基となるHashMap
インスタンスは指定された初期容量およびデフォルトの負荷係数(0.75)を持ちます。HashSet(int initialCapacity, float loadFactor)
新しい空のセットを作成します。基となるHashMap
インスタンスは指定された初期容量および指定された負荷係数を持ちます。HashSet(Collection<? extends E> c)
指定されたコレクションの要素を格納する新規セットを作成します。
-
メソッドのサマリー
修飾子と型 メソッド 説明 boolean
add(E e)
指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。void
clear()
すべての要素をセットから削除します。Object
clone()
このHashSet
インスタンスのシャロー・コピーを返します。要素自体は複製されません。boolean
contains(Object o)
指定された要素がこのセットに含まれている場合にtrue
を返します。boolean
isEmpty()
このセットに要素が1つも含まれていない場合にtrue
を返します。Iterator<E>
iterator()
セット内の各要素についてのイテレータを返します。boolean
remove(Object o)
指定された要素がこのセットに存在する場合に、要素をセットから削除します。int
size()
セット内の要素数(そのカーディナリティ)を返します。Spliterator<E>
spliterator()
このセット内の要素に対する遅延バインディングおよびフェイルファストSpliterator
を作成します。-
クラス 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
public Iterator<E> iterator()
セット内の各要素についてのイテレータを返します。 要素が返されるときに特定の順序はありません。- 定義:
iterator
、インタフェース:Collection<E>
- 定義:
iterator
、インタフェース:Iterable<E>
- 定義:
iterator
、インタフェース:Set<E>
- 定義:
iterator
、クラス:AbstractCollection<E>
- 戻り値:
- セットの要素のIterator
- 関連項目:
ConcurrentModificationException
-
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
-
-