|
Foundation 1.1.2 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.util.Dictionary
java.util.Hashtable
public class 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 プラットフォーム 1.2 では、このクラスは Map を実装するために改良されているため、Java Collections Framework の一部になります。新しいコレクションの実装とは異なり、Hashtable は同期をとります。
Hashtable のコレクションビューメソッドによって返される Collection の iterator メソッドおよび listIterator メソッドが返す Iterator は、「フェイルファスト」です。Iterator の作成後に、Iterator 自体の remove または add メソッド以外の方法で Hashtable を構造的に変更すると、Iterator は ConcurrentModificationException をスローします。したがって、並行して変更が行われると、Iterator は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。Hashtable のキーメソッドおよび値メソッドによって返される Enumeration は、フェイルファストではありません。
通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、反復子のフェイルファストの動作を保証することはできません。フェイルファスト反復子は最善努力原則に基づき、ConcurrentModificationException をスローします。したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。反復子のフェイルファストの動作はバグを検出するためにのみ使用するべきです。
このクラスは、Java Collections Framework のメンバーです。
Object.equals(java.lang.Object),
Object.hashCode(),
rehash(),
Collection,
Map,
HashMap,
TreeMap,
直列化された形式| コンストラクタの概要 | |
|---|---|
Hashtable()
デフォルトの初期容量 (11) および負荷係数 (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 - マッピングがこのマップに配置されるマップ
NullPointerException - 指定されたマップが null の場合| メソッドの詳細 |
|---|
public int size()
Map 内の sizeDictionary 内の sizepublic boolean isEmpty()
Map 内の isEmptyDictionary 内の isEmptytrue、そうでない場合は falsepublic Enumeration keys()
Dictionary 内の keysEnumeration,
elements(),
keySet(),
Mappublic Enumeration elements()
Dictionary 内の elementsEnumeration,
keys(),
values(),
Mappublic boolean contains(Object value)
containsKey メソッドよりも負荷がかかります。このメソッドは、機能の点で containsValue (コレクションフレームワークの Map インタフェースの一部) と同じです。
value - 検索する値
value 引数にマッピングする場合は true、そうでない場合は false
NullPointerException - 値が null の場合containsKey(Object),
containsValue(Object),
Mappublic boolean containsValue(Object value)
このメソッドは、機能の点で contains (Map インタフェースに先行する) と同じです。
Map 内の containsValuevalue - ハッシュテーブルにあるかどうかを判定される値
NullPointerException - 値が null の場合Mappublic boolean containsKey(Object key)
Map 内の containsKeykey - 可能なキー
true、そうでない場合は false
NullPointerException - キーが null の場合contains(Object)public Object get(Object key)
Map 内の getDictionary 内の getkey - ハッシュテーブルのキー
null
NullPointerException - キーが null の場合put(Object, Object)protected void rehash()
public Object put(Object key,
Object value)
key を、指定された value にマップします。キーや値は null にすることはできません。
この値は、元のキーと等しいキーを指定して get メソッドを呼び出すことによって取り出すことができます。
Map 内の putDictionary 内の putkey - ハッシュテーブルキーvalue - 値
null
NullPointerException - キーまたは値が null の場合Object.equals(Object),
get(Object)public Object remove(Object key)
Map 内の removeDictionary 内の removekey - 削除するキー
null
NullPointerException - キーが null の場合public void putAll(Map t)
Map 内の putAllt - マップに格納されるマッピング
NullPointerException - 指定されたマップが null の場合public void clear()
Map 内の clearpublic Object clone()
Object 内の cloneCloneablepublic String toString()
Object の toString メソッドにオーバーライドします。
Object 内の toStringpublic Set keySet()
Map 内の keySetpublic Set entrySet()
Map 内の entrySetMap.Entrypublic Collection values()
Map 内の valuespublic boolean equals(Object o)
Map 内の equalsObject 内の equalso - この Hashtable と等しいかどうかを比較するオブジェクト
Map.equals(Object)public int hashCode()
Map 内の hashCodeObject 内の hashCodeMap.hashCode()
|
Foundation 1.1.2 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。