模块  java.base
软件包  java.util

Class 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
    此类实现Setインターフェース、ハッシュテーブルによって(実際にはHashMap实例)支持。 それはコレクションの反復順序を保証しません; 特に、順序が時間の経過とともに変わらないことは保証されません。 此类允许null元素。

    このクラスは基本的な操作を提供します(固定時間性能add , remove , containsとsize)、ハッシュ関数が要素をバケット内に正しく分散すると仮定します。 このコレクションの反復にかかる時間は、...とHashSetインスタンスのサイズ(要素数)に加えてバッキングHashMapインスタンスの「容量」(バケット数)の合計に比例します。 因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低)非常重要。

    この実装は同期化されないことに注意してください。 複数のスレッドが同時にハッシュセットにアクセスし、少なくとも1つのスレッドがそのセットを変更した場合、必须外部で同期します。 これは通常、コレクションを自然にカプセル化する何らかのオブジェクト上で同期することによって実現されます。 そのようなオブジェクトが存在しない場合は、使用する必要がありますCollections.synchronizedSet方法“包装”该集合 。 これは、コレクションへの偶発のな同期されていないアクセスを防ぐために、作成時に行うのが最適です:

      Set s = Collections.synchronizedSet(new HashSet(...)); 

    このクラスのiteratorメソッドが返すイテレータはフェイルファストの:イテレータの作成後、イテレータ自身の...による場合を除いて、そのセットが変更された場合remove方法之外,迭代器抛出ConcurrentModificationException 。 したがって、並行変更の場合、イテレータは将来の不確定な時点で任意の非決定のな動作のリスクを冒すのではなく、迅速かつクリーンに失敗します。

    イテレータのフェイルファスト動作は保証されないことに注意してください。一般のに、同期されていない並行変更が存在する場合、厳格な保証をすることは不可能です。 フェイルファストイテレータはベストエフォート方式でスローされます。ConcurrentModificationException 。 したがって、この例外に依存してその正しさを保証するプログラムを作成することは誤りです:イテレータのフェイルファスト動作は、エラーを検出するためだけに使用すべきです。

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

    以下のバージョンから:
    1.2
    另请参见:
    Collection , Set , TreeSet , HashMap , Serialized Form
    • コンストラクタの概要

      构造方法  
      构造器 描述
      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)
        指定されたコレクション内の要素を含む新しいセットを構築します。 HashMapデフォルトの負荷係数(0.75)を使用して作成され、初期容量は指定されたコレクション内の要素を格納するのに十分です。
        参数
        c - cこのセットに配置される要素のコレクション
        异常
        NullPointerException- 指定されたコレクションがnullの場合
      • HashSet

        public HashSet​(int initialCapacity,
                       float loadFactor)
        新しい空のセットを構築します; 后备HashMapインスタンスは、指定された初期容量と指定された負荷係数を持ちます。
        参数
        initialCapacityハッシュマップの初期容量
        loadFactorハッシュマップの負荷係数
        异常
        IllegalArgumentException初期容量がゼロ未満であるか、負荷係数が非正である場合
      • HashSet

        public HashSet​(int initialCapacity)
        新しい空のセットを構築します; 支持HashMapインスタンスは、指定された初期容量とデフォルトの負荷係数(0.75)を持ちます。
        参数
        initialCapacityハッシュテーブルの初期容量
        异常
        IllegalArgumentException初期容量が0未満の場合
    • メソッドの詳細

      • size

        public int size()
        このコレクション内の要素数(基数)を返します。
        Specified by:
        sizeインターフェースでCollection<E>
        Specified by:
        sizeインターフェースでSet<E>
        结果
        このセットの要素数(カーディナリティ)
      • isEmpty

        public boolean isEmpty()
        如果此集合不包含任何元素,则返回 true 。
        Specified by:
        isEmptyインターフェースでCollection<E>
        Specified by:
        isEmptyインターフェースでSet<E>
        重写:
        isEmpty类 AbstractCollection<E>
        结果
        trueこのセットが要素を含まない場合
      • contains

        public boolean contains​(Object o)
        このセットが指定された要素を含む場合、戻りますtrue 。 更正式地说,返回trueこのセットに含まれる要素が...である場合に限りe ,使得Objects.equals(o, e) 。
        Specified by:
        containsインターフェースでCollection<E>
        Specified by:
        containsインターフェースでSet<E>
        重写:
        containsクラス内AbstractCollection<E>
        参数
        oこのセット内での存在をテストする要素
        结果
        trueこのセットが指定された要素を含む場合
      • add

        public boolean add​(E e)
        指定された要素がまだ存在しない場合は、このセットに追加します。 より正式には、指定された要素をeこの set は、set に要素が含まれていない場合。e2使得Objects.equals(e, e2) 。 如果此set已包含该元素,则调用将保持set不变并返回false 。
        Specified by:
        addインターフェースでCollection<E>
        Specified by:
        addインターフェースでSet<E>
        重写:
        addクラス内AbstractCollection<E>
        参数
        eこのセットに追加される要素
        结果
        trueセットが指定された要素を含む場合
      • remove

        public boolean remove​(Object o)
        存在する場合、このセットから指定された要素を削除します。 更正式地,删除元素e ,使得Objects.equals(o, e)このコレクションがそのような要素を含む場合。 如果此集合包含元素,则返回true (或等效地,如果此集合因调用而更改)。 (一旦调用返回,该集合将不包含该元素。)
        Specified by:
        removeインターフェースでCollection<E>
        Specified by:
        removeインターフェースでSet<E>
        重写:
        remove类 AbstractCollection<E>
        参数
        oこのセットから削除するオブジェクト(存在する場合)
        结果
        trueセットが指定された要素を含む場合
      • clear

        public void clear()
        このセットからすべての要素を削除します。 この呼び出しから戻った後、そのセットは空になります。
        Specified by:
        clearインターフェースでCollection<E>
        Specified by:
        clearインターフェースでSet<E>
        重写:
        clear类 AbstractCollection<E>
      • clone

        public Object clone()
        返回此 HashSetインスタンスの浅いコピー:要素自体はクローンされません。
        重写:
        clone类 Object
        结果
        このコレクションのシャローコピー
        另请参见:
        Cloneable