JavaTM Platform
Standard Ed. 6

java.util
クラス HashSet<E>

java.lang.Object
  上位を拡張 java.util.AbstractCollection<E>
      上位を拡張 java.util.AbstractSet<E>
          上位を拡張 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 のインスタンスの「容量」(バケット数) の合計に比例した時間が必要です。したがって、繰り返し処理の性能が重要な場合は、初期容量をあまり高く (負荷係数をあまり低く) 設定しないことが非常に重要です。  

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

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

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

通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、反復子のフェイルファストの動作を保証することはできません。フェイルファスト反復子は最善努力原則に基づき、ConcurrentModificationException をスローします。したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。「反復子のフェイルファストの動作はバグを検出するためにのみ使用すべきです」。  

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

導入されたバージョン:
1.2
関連項目:
Collection, Set, TreeSet, HashMap, 直列化された形式

コンストラクタの概要
HashSet()
          新しい空のセットを作成します。
HashSet(Collection<? extends E> c)
          指定されたコレクションの要素を格納する新規セットを作成します。
HashSet(int initialCapacity)
          新しい空のセットを作成します。
HashSet(int initialCapacity, float loadFactor)
          新しい空のセットを作成します。
 
メソッドの概要
 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()
          セット内の要素数 (そのカーディナリティ) を返します。
 
クラス java.util.AbstractSet から継承されたメソッド
equals, hashCode, removeAll
 
クラス java.util.AbstractCollection から継承されたメソッド
addAll, containsAll, retainAll, toArray, toArray, toString
 
クラス java.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 
インタフェース java.util.Set から継承されたメソッド
addAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray
 

コンストラクタの詳細

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

iterator

public Iterator<E> iterator()
セット内の各要素についての反復子を返します。要素が返されるときに特定の順序はありません。

定義:
インタフェース Iterable<E> 内の iterator
定義:
インタフェース Collection<E> 内の iterator
定義:
インタフェース Set<E> 内の iterator
定義:
クラス AbstractCollection<E> 内の iterator
戻り値:
セットの要素の Iterator
関連項目:
ConcurrentModificationException

size

public int size()
セット内の要素数 (そのカーディナリティ) を返します。

定義:
インタフェース Collection<E> 内の size
定義:
インタフェース Set<E> 内の size
定義:
クラス AbstractCollection<E> 内の size
戻り値:
セット内の要素数 (そのカーディナリティー)

isEmpty

public boolean isEmpty()
セットが要素を 1 つも保持していない場合に true を返します。

定義:
インタフェース Collection<E> 内の isEmpty
定義:
インタフェース Set<E> 内の isEmpty
オーバーライド:
クラス AbstractCollection<E> 内の isEmpty
戻り値:
セットが要素を 1 つも保持していない場合は true

contains

public boolean contains(Object o)
セットが、指定された要素を保持している場合に true を返します。つまり、セットに、(o==null ? e==null : o.equals(e)) となる要素 e が含まれている場合にだけ true を返します。

定義:
インタフェース Collection<E> 内の contains
定義:
インタフェース Set<E> 内の contains
オーバーライド:
クラス AbstractCollection<E> 内の contains
パラメータ:
o - セットにあるかどうかを調べる要素
戻り値:
セットが、指定された要素を保持している場合は true

add

public boolean add(E e)
指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。つまり、セット内に、(e==null ? e2==null : e.equals(e2)) に該当する要素 e2 がなかった場合は、指定された要素 e をセットに追加します。セット内にすでにこの要素がある場合、呼び出しはセットを変更せずに false を返します。

定義:
インタフェース Collection<E> 内の add
定義:
インタフェース Set<E> 内の add
オーバーライド:
クラス AbstractCollection<E> 内の add
パラメータ:
e - セットに追加される要素
戻り値:
セットが指定された要素を保持していなかった場合は true

remove

public boolean remove(Object o)
指定された要素がこのセットに存在する場合に、要素をセットから削除します。つまり、このセットに (o==null ? e==null : o.equals(e)) となる要素 e が含まれている場合に、その要素を削除します。この要素がセット内にあった場合 (セットが呼び出しの結果として変更された場合) は、true を返します。呼び出しが復帰したあとは、このセットはその要素を持っていません。

定義:
インタフェース Collection<E> 内の remove
定義:
インタフェース Set<E> 内の remove
オーバーライド:
クラス AbstractCollection<E> 内の remove
パラメータ:
o - セットに存在すれば削除されるオブジェクト
戻り値:
指定された要素がセット内にあった場合は true

clear

public void clear()
すべての要素をセットから削除します。この呼び出しが戻ると、セットは空になります。

定義:
インタフェース Collection<E> 内の clear
定義:
インタフェース Set<E> 内の clear
オーバーライド:
クラス AbstractCollection<E> 内の clear

clone

public Object clone()
HashSet のインスタンスのシャローコピーを返します。要素自体は複製されません。

オーバーライド:
クラス Object 内の clone
戻り値:
このセットのシャローコピー
関連項目:
Cloneable

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。