|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.AbstractCollection java.util.AbstractSet java.util.HashSet
public class HashSet
このクラスは、ハッシュテーブル (実際には HashMap のインスタンス) に連動し、Set インタフェースを実装します。このクラスでは、セットの繰り返し順序について保証しません。特に、その順序を一定に保つことを保証しません。このクラスは、null 要素を許容します。
このクラスは、ハッシュ関数が複数のバケットで適切に要素を分散することを前提として、基本のオペレーション (add、remove、contains、および size) で一定時間の性能を提供します。セットの繰り返し処理では、HashSet のインスタンスのサイズ (要素数) と基となる HashMap のインスタンスの「容量」(バケット数) の合計に比例した時間が必要です。したがって、繰り返し処理の性能が重要な場合は、初期容量をあまり高く (負荷係数をあまり低く) 設定しないことが非常に重要です。
この実装は同期化されません。複数のスレッドが並行してセットにアクセスし、それらのスレッドの少なくとも 1 つが構造的にセットを変更する場合には、外部で同期をとる必要があります。通常、構造的な変更は、セットを自然にカプセル化する特定のオブジェクトで同期をとることによって達成されます。この種のオブジェクトがない場合には、Collections.synchronizedList メソッドを使用してセットを「ラップ」する必要があります。これは、HashSet インスタンスへの偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。
Set s = Collections.synchronizedSet(new HashSet(...));
このクラスの iterator メソッドによって返される反復子は「フェイルファスト」です。反復子が作成されたあとに、反復子自体の remove メソッド以外の方法でセットが変更された場合、反復子は ConcurrentModificationException をスローします。このように、並行して変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。
通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、反復子のフェイルファストの動作を保証することはできません。フェイルファスト反復子は最善努力原則に基づき、ConcurrentModificationException をスローします。したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。「反復子のフェイルファストの動作はバグを検出するためにのみ使用するべきです」。
このクラスは、Java Collections Framework のメンバーです。
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, 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 |
コンストラクタの詳細 |
---|
public HashSet()
public HashSet(Collection c)
c
- 要素がセットに配置されるコレクション
NullPointerException
- 指定されたコレクションが null である場合public HashSet(int initialCapacity, float loadFactor)
initialCapacity
- ハッシュマップの初期容量loadFactor
- ハッシュマップの負荷係数
IllegalArgumentException
- 初期容量が 0 より小さいか、負荷係数が正の値ではない場合public HashSet(int initialCapacity)
initialCapacity
- ハッシュテーブルの初期容量
IllegalArgumentException
- 初期容量が 0 より小さい場合メソッドの詳細 |
---|
public Iterator iterator()
Collection
内の iterator
Set
内の iterator
AbstractCollection
内の iterator
ConcurrentModificationException
public int size()
Collection
内の size
Set
内の size
AbstractCollection
内の size
public boolean isEmpty()
Collection
内の isEmpty
Set
内の isEmpty
AbstractCollection
内の isEmpty
public boolean contains(Object o)
Collection
内の contains
Set
内の contains
AbstractCollection
内の contains
o
- セットにあるかどうかを調べる要素
public boolean add(Object o)
Collection
内の add
Set
内の add
AbstractCollection
内の add
o
- セットに追加される要素
public boolean remove(Object o)
Collection
内の remove
Set
内の remove
AbstractCollection
内の remove
o
- セットにあれば削除されるオブジェクト
public void clear()
Collection
内の clear
Set
内の clear
AbstractCollection
内の clear
public Object clone()
Object
内の clone
Cloneable
|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。