E - このセットで保持される要素の型public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
このクラスは、ハッシュ関数が複数のバケットで適切に要素を分散することを前提として、基本のオペレーション(add、remove、contains、およびsize)で一定時間の性能を提供します。 セットの反復処理では、HashSetのインスタンスのサイズ(要素数)と基となるHashMapのインスタンスの「容量」(バケット数)の合計に比例した時間が必要です。 したがって、反復処理の性能が重要な場合は、初期容量をあまり高く(負荷係数をあまり低く)設定しないことが非常に重要です。
この実装はsynchronizedされません。 複数のスレッドが並行してハッシュ・セットにアクセスし、それらのスレッドの少なくとも1つがセットを変更する場合には、外部で同期をとる必要があります。 通常、構造的な変更は、セットを自然にカプセル化する特定のオブジェクトで同期をとることによって達成されます。 そのようなオブジェクトが存在しない場合は、Collections.synchronizedSetメソッドを使用してセットを「ラップ」する必要があります。 これは、セットへの偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。
Set s = Collections.synchronizedSet(new HashSet(...));
このクラスのiteratorメソッドによって返されるイテレータは、フェイルファストです。イテレータの作成後に、イテレータ自体のremoveメソッド以外の方法でセットが変更されると、イテレータはConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。
通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、イテレータのフェイルファストの動作を保証することはできません。 フェイルファスト・イテレータは最善努力原則に基づき、ConcurrentModificationExceptionをスローします。 したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。イテレータのフェイルファストの動作はバグを検出するためにのみ使用すべきです。
このクラスは、Java Collections Frameworkのメンバーです。
Collection, Set, TreeSet, HashMap, 直列化された形式| コンストラクタ | 説明 |
|---|---|
HashSet() |
新しい空のセットを作成します。基となるHashMapインスタンスはデフォルトの初期容量(16)および負荷係数(0.75)を持ちます。
|
HashSet(Collection<? extends E> c) |
指定されたコレクションの要素を格納する新規セットを作成します。
|
HashSet(int initialCapacity) |
新しい空のセットを作成します。基となるHashMapインスタンスは指定された初期容量およびデフォルトの負荷係数(0.75)を持ちます。
|
HashSet(int initialCapacity, float loadFactor) |
新しい空のセットを作成します。基となるHashMapインスタンスは指定された初期容量および指定された負荷係数を持ちます。
|
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
boolean |
add(E e) |
指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。
|
void |
clear() |
すべての要素をセットから削除します。
|
Object |
clone() |
HashSetのインスタンスのシャロー・コピーを返します。要素自体は複製されません。
|
boolean |
contains(Object o) |
指定された要素がセットに含まれている場合にtrueを返します。
|
boolean |
isEmpty() |
このセットに要素が1つも含まれていない場合にtrueを返します。
|
Iterator<E> |
iterator() |
セット内の各要素についてのイテレータを返します。
|
boolean |
remove(Object o) |
指定された要素がこのセットに存在する場合に、要素をセットから削除します。
|
int |
size() |
セット内の要素数(そのカーディナリティ)を返します。
|
Spliterator<E> |
spliterator() |
このセット内の要素に対する遅延バインディングおよびフェイルファスト
Spliteratorを作成します。 |
equals, hashCode, removeAlladdAll, containsAll, retainAll, toArray, toArray, toStringaddAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArrayparallelStream, removeIf, streampublic HashSet()
public HashSet(Collection<? extends E> c)
c - 要素がこのセットに配置されるコレクションNullPointerException - 指定されたコレクションがnullである場合public HashSet(int initialCapacity,
float loadFactor)
initialCapacity - ハッシュ・マップの初期容量loadFactor - ハッシュ・マップの負荷係数IllegalArgumentException - 初期容量がゼロよりも小さい場合、または負荷係数が正でない場合public HashSet(int initialCapacity)
initialCapacity - ハッシュ表の初期容量IllegalArgumentException - 初期容量がゼロよりも小さい場合public Iterator<E> iterator()
iterator、インタフェースIterable<E>iterator、インタフェースCollection<E>iterator、インタフェースSet<E>iterator、クラスAbstractCollection<E>ConcurrentModificationExceptionpublic int size()
size、インタフェースCollection<E>size、インタフェースSet<E>size、クラスAbstractCollection<E>public boolean isEmpty()
isEmpty、インタフェースCollection<E>isEmpty、インタフェースSet<E>isEmpty、クラスAbstractCollection<E>public boolean contains(Object o)
contains、インタフェースCollection<E>contains、インタフェースSet<E>contains、クラスAbstractCollection<E>o - このセット内にあるかどうかが判定される要素public boolean add(E e)
add、インタフェースCollection<E>add、インタフェースSet<E>add、クラスAbstractCollection<E>e - このセットに追加される要素public boolean remove(Object o)
remove、インタフェースCollection<E>remove、インタフェースSet<E>remove、クラスAbstractCollection<E>o - このセットから削除されるオブジェクト(そのオブジェクトが存在する場合)public void clear()
clear、インタフェースCollection<E>clear、インタフェースSet<E>clear、クラスAbstractCollection<E>public Object clone()
public Spliterator<E> spliterator()
Spliteratorを作成します。
Spliteratorは、Spliterator.SIZEDおよびSpliterator.DISTINCTを報告します。 オーバーライドする実装は、追加の特性値の報告をドキュメント化する必要があります。
spliterator、インタフェースIterable<E>spliterator、インタフェースCollection<E>spliterator、インタフェースSet<E>Spliterator バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。