|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractSet<E> java.util.HashSet<E>
E
- このセットが保持する要素の型public class HashSet<E>
このクラスは、ハッシュテーブル (実際には HashMap のインスタンス) に連動し、Set インタフェースを実装します。このクラスでは、セットの繰り返し順序について保証しません。特に、その順序を一定に保つことを保証しません。このクラスは、null 要素を許容します。
このクラスは、ハッシュ関数が複数のバケットで適切に要素を分散することを前提として、基本のオペレーション (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()
新しい空のセットを作成します。 |
|
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 |
コンストラクタの詳細 |
---|
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
- 初期容量が 0 より小さい場合メソッドの詳細 |
---|
public Iterator<E> iterator()
Iterable<E>
内の iterator
Collection<E>
内の iterator
Set<E>
内の iterator
AbstractCollection<E>
内の iterator
ConcurrentModificationException
public int size()
Collection<E>
内の size
Set<E>
内の size
AbstractCollection<E>
内の size
public boolean isEmpty()
Collection<E>
内の isEmpty
Set<E>
内の isEmpty
AbstractCollection<E>
内の isEmpty
public boolean contains(Object o)
Collection<E>
内の contains
Set<E>
内の contains
AbstractCollection<E>
内の contains
o
- セットにあるかどうかを調べる要素
public boolean add(E e)
Collection<E>
内の add
Set<E>
内の add
AbstractCollection<E>
内の add
e
- セットに追加される要素
public boolean remove(Object o)
Collection<E>
内の remove
Set<E>
内の remove
AbstractCollection<E>
内の remove
o
- セットに存在すれば削除されるオブジェクト
public void clear()
Collection<E>
内の clear
Set<E>
内の clear
AbstractCollection<E>
内の clear
public Object clone()
Object
内の clone
Cloneable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。