クラス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