モジュール java.base
パッケージ 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メソッドによって返されるイテレータは、fail-fastです: イテレータの作成後にセットが変更された場合、イテレータ独自のremoveメソッドを除き、なんらかの方法でイテレータがConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。

通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、イテレータのフェイルファストの動作を保証することはできません。 フェイルファスト・イテレータは、ベスト・エフォート・ベースでConcurrentModificationExceptionをスローします。 したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。イテレータのフェイルファストの動作はバグを検出するためにのみ使用すべきです。

このクラスは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.2
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    新しい空のセットを構築します。バッキング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
    すべての要素をセットから削除します。
    このHashSetインスタンスのシャロー・コピーを返します: 要素自体はクローンされません。
    boolean
    指定された要素がこのセットに含まれている場合にtrueを返します。
    boolean
    このセットに要素が1つも含まれていない場合にtrueを返します。
    セット内の各要素についてのイテレータを返します。
    static <T> HashSet<T>
    newHashSet(int numElements)
    予想される要素数に適した新しい空のHashSetを作成します。
    boolean
    指定された要素がこのセットに存在する場合に、要素をセットから削除します。
    int
    セット内の要素数(そのカーディナリティ)を返します。
    このセット内の要素に対する遅延バインディングおよびフェイルファスト Spliteratorを作成します。
    このコレクションの要素がすべて格納されている配列を返します。
    <T> T[]
    toArray(T[] a)
    このコレクション内のすべての要素を保持する配列を返します。返される配列の実行時の型は、指定された配列の型です。

    クラスjava.util.AbstractSetで宣言されたメソッド

    equals, hashCode, removeAll

    クラスjava.util.AbstractCollectionで宣言されたメソッド

    addAll, containsAll, retainAll, toArray, toArray, toString

    クラスjava.lang.Objectで宣言されたメソッド

    finalize, getClass, notify, notifyAll, wait, wait, wait

    インタフェースjava.util.Collectionで宣言されたメソッド

    parallelStream, removeIf, stream, toArray

    インタフェースjava.lang.Iterableで宣言されたメソッド

    forEach

    インタフェースjava.util.Setで宣言されたメソッド

    addAll, containsAll, equals, hashCode, removeAll, retainAll
  • コンストラクタの詳細

    • 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

      public Iterator<E> iterator()
      セット内の各要素についてのイテレータを返します。 要素が返されるときに特定の順序はありません。
      定義:
      iterator、インタフェースCollection<E>
      定義:
      iterator、インタフェースIterable<E>
      定義:
      iterator、インタフェースSet<E>
      定義:
      iterator、クラスAbstractCollection<E>
      戻り値:
      セットの要素のIterator
      関連項目:
    • size

      public int size()
      セット内の要素数(そのカーディナリティ)を返します。
      定義:
      size、インタフェースCollection<E>
      定義:
      size、インタフェースSet<E>
      戻り値:
      セット内の要素数(そのカーディナリティ)
    • 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

      public Object clone()
      このHashSetインスタンスのシャロー・コピーを返します: 要素自体はクローンされません。
      オーバーライド:
      clone、クラスObject
      戻り値:
      このセットのシャロー・コピー
      関連項目:
    • 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