- 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)指定されたコレクションの要素を格納する新規セットを作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 booleanadd(E e)指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。voidclear()すべての要素をセットから削除します。Objectclone()このHashSetインスタンスのシャロー・コピーを返します。要素自体は複製されません。booleancontains(Object o)指定された要素がこのセットに含まれている場合にtrueを返します。booleanisEmpty()このセットに要素が1つも含まれていない場合にtrueを返します。Iterator<E>iterator()セット内の各要素についてのイテレータを返します。booleanremove(Object o)指定された要素がこのセットに存在する場合に、要素をセットから削除します。intsize()セット内の要素数(そのカーディナリティ)を返します。Spliterator<E>spliterator()このセット内の要素に対する遅延バインディングおよびフェイルファストSpliteratorを作成します。-
クラス java.util.AbstractCollectionで宣言されたメソッド
addAll, containsAll, retainAll, toArray, toArray, toString
-
クラス java.util.AbstractSetで宣言されたメソッド
equals, hashCode, removeAll
-
インタフェース java.util.Collectionで宣言されたメソッド
parallelStream, removeIf, stream
-
-
-
-
コンストラクタの詳細
-
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
-
-