Java プラットフォーム 1.2

java.util
クラス HashSet

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--java.util.AbstractSet
              |
              +--java.util.HashSet

public class HashSet
extends AbstractSet
implements Set, Cloneable, Serializable

このクラスは、ハッシュテーブル (実際には HashMap のインスタンス) を基にし、Set インタフェースを実装します。このクラスでは、セットの繰り返し順序について保証しません。特に、その順序を一定に保つことを保証しません。このクラスは、null 要素を許容します。

このクラスは、ハッシュ関数が複数のバケットで適切に要素を分散することを前提として、基本のオペレーション (addremovecontains、および size) で時間一定の性能を提供します。セットの繰り返し処理では、HashSet のインスタンスのサイズ (要素数) と基となる HashMap のインスタンスの「容量」(バケット数) の合計に比例した時間が必要です。したがって、繰り返し処理の性能が重要な場合は、初期容量をあまり高く (負荷係数をあまり低く) 設定しないことが非常に重要です。

この実装は同期化されません。複数のスレッドが同時にセットにアクセスし、それらのスレッドの少なくとも 1 つがセットを変更する場合は、外部で同期をとる必要があります。通常、それはセットを自然にカプセル化するオブジェクトで同期をとることによって達成されます。そのようなオブジェクトがない場合には、Collections.synchronizedSet メソッドを使ってセットを「ラップ」します。これは、HashSet への偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。

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

このクラスの iterator メソッドによって返される反復子は「フェイルファスト」です。反復子が作成されたあとに、反復子独自の remove メソッド以外の方法でセットが変更された場合、反復子は ConcurrentModificationException をスローします。したがって、同時変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、速やかにかつクリーンに失敗します。

導入されたバージョン:
JDK1.2
関連項目:
Collection, Set, TreeSet, Collections.synchronizedSet(Set), HashMap, 直列化された形式

コンストラクタの概要
HashSet()
          新しい空のセットを作成します。
HashSet(Collection c)
          指定されたコレクションの要素を格納する新しいセットを作成します。
HashSet(int initialCapacity)
          新しい空のセットを作成します。
HashSet(int initialCapacity, float loadFactor)
          新しい空のセットを作成します。
 
メソッドの概要
 boolean add(Object o)
          指定された要素がまだ存在しない場合に、その要素をセットに追加します。
 void clear()
          セットからすべての要素を削除します。
 Object clone()
          HashSet のインスタンスのシャローコピーを返します。
 boolean contains(Object o)
          セットが指定された要素を格納している場合に true を返します。
 boolean isEmpty()
          セットが要素を 1 つも格納していない場合に true を返します。
 Iterator iterator()
          セットの要素の反復子を返します。
 boolean remove(Object o)
          指定された要素が存在する場合に、その要素をセットから削除します。
 int size()
          セットの要素数 (基数) を返します。
 
クラス java.util.AbstractSet から継承したメソッド
equals, hashCode
 
クラス java.util.AbstractCollection から継承したメソッド
addAll, containsAll, removeAll, retainAll, toArray, toArray, toString
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

HashSet

public HashSet()
新しい空のセットを作成します。基となる HashMap のインスタンスは、デフォルトの容量および負荷係数 (0.75) を持ちます。

HashSet

public HashSet(Collection c)
指定されたコレクションの要素を格納する新しいセットを作成します。基となる HashMap のインスタンスの容量は、指定されたコレクションのサイズの 2 倍または 11 (どちらか大きい方) であり、デフォルトの負荷係数 (0.75) が使用されます。

HashSet

public HashSet(int initialCapacity,
               float loadFactor)
新しい空のセットを作成します。基となる HashMap のインスタンスは指定された初期容量および指定された負荷係数を持ちます。
パラメータ:
initialCapacity - ハッシュマップの初期容量
loadFactor - ハッシュマップの負荷係数
例外:
IllegalArgumentException - 初期容量が 0 より小さいか、負荷係数が正ではない場合

HashSet

public HashSet(int initialCapacity)
新しい空のセットを作成します。基となる HashMap のインスタンスは、指定された初期容量およびデフォルトの負荷係数 (0.75) を持ちます。
パラメータ:
initialCapacity - ハッシュテーブルの初期容量
例外:
IllegalArgumentException - 初期容量が 0 より小さい場合
メソッドの詳細

iterator

public Iterator iterator()
セットの要素の反復子を返します。要素が返されるときに特定の順序はありません。
定義:
インタフェース Set 内の iterator
戻り値:
セットの要素の Iterator
オーバーライド:
クラス AbstractCollection 内の iterator
関連項目:
ConcurrentModificationException

size

public int size()
セットの要素数 (基数) を返します。
定義:
インタフェース Set 内の size
戻り値:
セットの要素数 (基数)
オーバーライド:
クラス AbstractCollection 内の size

isEmpty

public boolean isEmpty()
セットが要素を 1 つも格納していない場合に true を返します。
定義:
インタフェース Set 内の isEmpty
戻り値:
セットが要素を 1 つも格納していない場合は true
オーバーライド:
クラス AbstractCollection 内の isEmpty

contains

public boolean contains(Object o)
セットが指定された要素を格納している場合に true を返します。
定義:
インタフェース Set 内の contains
戻り値:
セットが指定された要素を格納している場合は true
オーバーライド:
クラス AbstractCollection 内の contains

add

public boolean add(Object o)
指定された要素がまだ存在しない場合に、その要素をセットに追加します。
定義:
インタフェース Set 内の add
パラメータ:
o - セットに追加される要素
戻り値:
セットが指定された要素をまだ格納していなかった場合は true
オーバーライド:
クラス AbstractCollection 内の add

remove

public boolean remove(Object o)
指定された要素が存在する場合に、その要素をセットから削除します。
定義:
インタフェース Set 内の remove
パラメータ:
o - セットから削除されるオブジェクト (そのオブジェクトが存在する場合)
戻り値:
セットが指定された要素を格納していた場合は true
オーバーライド:
クラス AbstractCollection 内の remove

clear

public void clear()
セットからすべての要素を削除します。
定義:
インタフェース Set 内の clear
オーバーライド:
クラス AbstractCollection 内の clear

clone

public Object clone()
HashSet のインスタンスのシャローコピーを返します。要素自体は複製されません。
戻り値:
セットのシャローコピー
オーバーライド:
クラス Object 内の clone

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.