E
- このセットで保持される要素の型public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
このクラスは、ハッシュ関数が複数のバケットで適切に要素を分散することを前提として、基本のオペレーション (add、remove、contains、および size) で一定時間の性能を提供します。セットの繰り返し処理では、HashSet のインスタンスのサイズ (要素数) と基となる HashMap のインスタンスの「容量」(バケット数) の合計に比例した時間が必要です。したがって、反復処理の性能が重要な場合は、初期容量をあまり高く (負荷係数をあまり低く) 設定しないことが非常に重要です。
この実装は同期化されません。複数のスレッドが並行してハッシュセットにアクセスし、それらのスレッドの少なくとも 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()
セット内の要素数 (そのカーディナリティ) を返します。
|
equals, hashCode, removeAll
addAll, containsAll, retainAll, toArray, toArray, toString
public 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>
ConcurrentModificationException
public 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>
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.