モジュール 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要素を許容します。

    このクラスは、ハッシュ関数が複数のバケットで適切に要素を分散することを前提として、基本のオペレーション(addremovecontains、および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)
      指定されたコレクションの要素を格納する新規セットを作成します。
    • コンストラクタの詳細

      • 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 - 初期容量がゼロよりも小さい場合
    • メソッドの詳細

      • 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)
        指定された要素がこのセットに存在する場合に、要素をセットから削除します。 より正式には、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インスタンスのシャロー・コピーを返します。要素自体は複製されません。
        オーバーライド:
        clone、クラスObject
        戻り値:
        このセットのシャロー・コピー
        関連項目:
        Cloneable