|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.util.Dictionary | +--java.util.Hashtable
このクラスは、ハッシュテーブルを実装するためのもので、キーを値にマップします。null
オブジェクト以外であれば、どのオブジェクトでもキーや値に使用することができます。
ハッシュテーブルにオブジェクトを格納したり、そこから取り出したりするには、キーとして使用するオブジェクトに、hashCode
メソッドと equals
メソッドが実装されていなければなりません。
Hashtable
のインスタンスには、その性能に影響する「初期容量」および「負荷係数」という 2 つのパラメータがあります。「容量」はハッシュテーブルの「バケット」の数で、「初期容量」は単純にハッシュテーブルが作成される時点での容量です。ハッシュテーブルは「オープン」であることに注意してください。「ハッシュの衝突」という、1 つのバケットが複数のエントリを格納する現象があり、その場合それらのエントリはシーケンシャルサーチされることになります。「負荷係数」は、ハッシュテーブルの容量が自動的に増加する前にハッシュテーブルがどの程度いっぱいになるかの基準です。ハッシュテーブルのエントリ数が負荷係数と現在容量の積を超えると、rehash
メソッドを呼び出すことによって容量を増やすことができます。
通常、デフォルトの負荷係数 (.75) では、時間コストとスペースコストの釣り合いを取ります。この値を大きくするとスペースのオーバーヘッドは減少しますが、エントリを参照するための時間のコストは増加し、get および put を含むほとんどの Hashtable オペレーションが影響を受けます。
初期容量により、浪費スペースと (時間のかかる) rehash
オペレーションの需要との間の釣り合いが制御されます。初期容量が、Hashtable の格納するエントリの最大数を負荷係数で割った値より大きい場合、rehash
オペレーションは起こりません。ただし、初期容量を高く設定しすぎると、スペースの浪費になります。
Hashtable
に多くのエントリを入れる場合は、このテーブルを十分に大きな容量で作成する方が、必要に応じてハッシュを自動的にやり直してテーブルを大きくするよりも、エントリを効率的に挿入することができます。
この例は、数値のハッシュテーブルを作成するものです。この例では、数値の名前をキーとして使います。
Hashtable numbers = new Hashtable(); numbers.put("one", new Integer(1)); numbers.put("two", new Integer(2)); numbers.put("three", new Integer(3));
数値を取り出すには、次のコードを使います。
Integer n = (Integer)numbers.get("two"); if (n != null) { System.out.println("two = " + n); }
Java 2 プラットフォーム v1.2 では、このクラスは Map を実装するために改良されているため、Java Collections Framework の一部になります。新しいコレクションの実装とは異なり、Hashtable は同期をとります。
Hashtable のすべての「コレクションビューメソッド」によって返される Collection の iterator メソッドおよび listIterator メソッドによって返される Iterator は、「フェイルファスト」です。Iterator の作成後に、Iterator 自体の remove メソッドまたは add メソッド以外の方法で Hashtable が構造的に変更されると、Iterator は ConcurrentModificationException をスローします。したがって、同時変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、直ちにかつ手際よく例外をスローします。Hashtable のキーメソッドおよび値メソッドによって返される Enumerations は、フェイルファストではありません。
Object.equals(java.lang.Object)
,
Object.hashCode()
,
rehash()
,
Collection
,
Map
,
HashMap
,
TreeMap
, 直列化された形式クラス java.util.Map から継承した内部クラス |
Map.Entry |
コンストラクタの概要 | |
Hashtable()
デフォルトの容量および負荷係数 (0.75) で新しい空のハッシュテーブルを生成します。 |
|
Hashtable(int initialCapacity)
指定された初期容量およびデフォルトの負荷係数 (0.75) で新しい空のハッシュテーブルを生成します。 |
|
Hashtable(int initialCapacity,
float loadFactor)
指定された初期容量と負荷係数で新しい空のハッシュテーブルを生成します。 |
|
Hashtable(Map t)
指定された Map と同じマッピングで新しいハッシュテーブルを生成します。 |
メソッドの概要 | |
void |
clear()
このハッシュテーブルを消去して、キーがない状態にします。 |
Object |
clone()
ハッシュテーブルのコピーを作成します。 |
boolean |
contains(Object value)
指定された値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。 |
boolean |
containsKey(Object key)
指定されたオブジェクトが、ハッシュテーブルのキーかどうかを判定します。 |
boolean |
containsValue(Object value)
Hashtable が 1 つまたは複数のキーをこの値にマッピングする場合に true を返します。 |
Enumeration |
elements()
ハッシュテーブルにある値のリストを返します。 |
Set |
entrySet()
Hashtable に格納されているエントリの Set ビューを返します。 |
boolean |
equals(Object o)
Map インタフェースでの定義に従って、指定された Object とこの Map を比較して等しいかどうかを判定します。 |
Object |
get(Object key)
指定されたキーにマップされている、ハッシュテーブルの値を返します。 |
int |
hashCode()
Map インタフェースの定義に従って、この Map のハッシュコード値を返します。 |
boolean |
isEmpty()
値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。 |
Enumeration |
keys()
ハッシュテーブルにあるキーのリストを返します。 |
Set |
keySet()
Hashtable に格納されているキーの Set ビューを返します。 |
Object |
put(Object key,
Object value)
ハッシュテーブルにおいて、指定された key を、指定された value にマップします。 |
void |
putAll(Map t)
指定された Map から Hashtable にすべてのマッピングをコピーします。 |
protected void |
rehash()
ハッシュテーブルの容量を増やし、それを内部的に再編成して、エントリを調整してアクセスをより効率的にします。 |
Object |
remove(Object key)
キー (およびそれに対応する値) をハッシュテーブルから削除します。 |
int |
size()
ハッシュテーブルにあるキーの数を返します。 |
String |
toString()
Hashtable オブジェクトの文字列表現を、ASCII 文字「, 」(コンマとスペース) で区切られ括弧で囲んだエントリのセットの形式で返します。 |
Collection |
values()
Hashtable に格納されている値の Collection ビューを返します。 |
クラス java.lang.Object から継承したメソッド |
finalize, getClass, notify, notifyAll, wait, wait, wait |
コンストラクタの詳細 |
public Hashtable(int initialCapacity, float loadFactor)
initialCapacity
- ハッシュテーブルの初期容量loadFactor
- ハッシュテーブルの負荷係数IllegalArgumentException
- 初期容量が 0 より小さいか、負荷係数が正の値ではない場合public Hashtable(int initialCapacity)
initialCapacity
- ハッシュテーブルの初期容量IllegalArgumentException
- 初期容量が 0 より小さい場合public Hashtable()
public Hashtable(Map t)
t
- マッピングがこのマップに配置されるマップメソッドの詳細 |
public int size()
Map
内の size
Dictionary
内の size
public boolean isEmpty()
Map
内の isEmpty
Dictionary
内の isEmpty
true
、ある場合は false
public Enumeration keys()
Dictionary
内の keys
Enumeration
,
elements()
,
keySet()
,
Map
public Enumeration elements()
Dictionary
内の elements
Enumeration
,
keys()
,
values()
,
Map
public boolean contains(Object value)
containsKey
メソッドよりも負荷がかかります。
このメソッドは、機能の点で containsValue (コレクションフレームワークの Map インタフェースの一部) と同じです。
value
- 検索する値value
引数にマッピングする場合は true
、そうでない場合は false
NullPointerException
- 値が null
の場合containsKey(Object)
,
containsValue(Object)
,
Map
public boolean containsValue(Object value)
このメソッドは、機能の点で contains (Map インタフェースに先行する) と同じです。
Map
内の containsValue
value
- ハッシュテーブルにあるかどうかを判定される値Map
public boolean containsKey(Object key)
Map
内の containsKey
key
- 可能なキーtrue
、そうでない場合は false
contains(Object)
public Object get(Object key)
Map
内の get
Dictionary
内の get
key
- ハッシュテーブルのキーnull
put(Object, Object)
protected void rehash()
public Object put(Object key, Object value)
key
を、指定された value
にマップします。キーや値は null
にすることはできません。
この値は、元のキーと等しいキーを指定して get
メソッドを呼び出すことによって取り出すことができます。
Map
内の put
Dictionary
内の put
key
- ハッシュテーブルキーvalue
- 値null
NullPointerException
- キーまたは値が null
の場合Object.equals(Object)
,
get(Object)
public Object remove(Object key)
Map
内の remove
Dictionary
内の remove
key
- 削除するキーnull
public void putAll(Map t)
Map
内の putAll
t
- マップに格納されるマッピングpublic void clear()
Map
内の clear
java.util.Map
からコピーされたタグ:UnsupportedOperationException
- clear がマップによってサポートされていない場合public Object clone()
Object
内の clone
public String toString()
Object の toString メソッドにオーバーライドします。
Object
内の toString
public Set keySet()
Map
内の keySet
public Set entrySet()
Map
内の entrySet
Map.Entry
public Collection values()
Map
内の values
public boolean equals(Object o)
Map
内の equals
Object
内の equals
Map.equals(Object)
public int hashCode()
Map
内の hashCode
Object
内の hashCode
Map.hashCode()
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.