CDC 1.1.2

java.util
クラス Hashtable

java.lang.Object
  上位を拡張 java.util.Dictionary
      上位を拡張 java.util.Hashtable
すべての実装されたインタフェース:
Serializable, Cloneable, Map
直系の既知のサブクラス:
Properties

public class Hashtable
extends Dictionary
implements Map, Cloneable, Serializable

このクラスは、ハッシュテーブルを実装するためのもので、キーを値にマップします。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 のメンバーです。

導入されたバージョン:
JDK1.0
関連項目:
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
 

コンストラクタの詳細

Hashtable

public Hashtable(int initialCapacity,
                 float loadFactor)
指定された初期容量と負荷係数で新しい空のハッシュテーブルを生成します。

パラメータ:
initialCapacity - ハッシュテーブルの初期容量
loadFactor - ハッシュテーブルの負荷係数
例外:
IllegalArgumentException - 初期容量が 0 より小さいか、負荷係数が正の値ではない場合

Hashtable

public Hashtable(int initialCapacity)
指定された初期容量およびデフォルトの負荷係数 (0.75) で新しい空のハッシュテーブルを生成します。

パラメータ:
initialCapacity - ハッシュテーブルの初期容量
例外:
IllegalArgumentException - 初期容量が 0 より小さい場合

Hashtable

public Hashtable()
デフォルトの初期容量 (11) および負荷係数 (0.75) で新しい空のハッシュテーブルを生成します。


Hashtable

public Hashtable(Map t)
指定された Map と同じマッピングで新しいハッシュテーブルを生成します。指定された Map のマッピングを保持するのに十分な初期容量、およびデフォルトの負荷係数 (0.75) で、ハッシュテーブルは作成されます。

パラメータ:
t - マッピングがこのマップに配置されるマップ
例外:
NullPointerException - 指定されたマップが null の場合
導入されたバージョン:
1.2
メソッドの詳細

size

public int size()
ハッシュテーブルにあるキーの数を返します。

定義:
インタフェース Map 内の size
定義:
クラス Dictionary 内の size
戻り値:
ハッシュテーブルにあるキーの数

isEmpty

public boolean isEmpty()
値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。

定義:
インタフェース Map 内の isEmpty
定義:
クラス Dictionary 内の isEmpty
戻り値:
値にマップされているキーがハッシュテーブルにない場合は true、そうでない場合は false

keys

public Enumeration keys()
ハッシュテーブルにあるキーのリストを返します。

定義:
クラス Dictionary 内の keys
戻り値:
ハッシュテーブルにあるキーのリスト
関連項目:
Enumeration, elements(), keySet(), Map

elements

public Enumeration elements()
ハッシュテーブルにある値のリストを返します。これらの要素を順次に取り出すには、Enumeration のメソッドを使用します。

定義:
クラス Dictionary 内の elements
戻り値:
ハッシュテーブルにある値のリスト
関連項目:
Enumeration, keys(), values(), Map

contains

public boolean contains(Object value)
指定された値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。このオペレーションは、containsKey メソッドよりも負荷がかかります。

このメソッドは、機能の点で containsValue (コレクションフレームワークの Map インタフェースの一部) と同じです。

パラメータ:
value - 検索する値
戻り値:
あるキーが equals メソッドで決められている、ハッシュテーブルの value 引数にマッピングする場合は true、そうでない場合は false
例外:
NullPointerException - 値が null の場合
関連項目:
containsKey(Object), containsValue(Object), Map

containsValue

public boolean containsValue(Object value)
Hashtable が 1 つまたは複数のキーをこの値にマッピングする場合に true を返します。

このメソッドは、機能の点で contains (Map インタフェースに先行する) と同じです。

定義:
インタフェース Map 内の containsValue
パラメータ:
value - ハッシュテーブルにあるかどうかを判定される値
戻り値:
このマップが 1 つ以上のキーを指定された値にマップしている場合は true
例外:
NullPointerException - 値が null の場合
導入されたバージョン:
1.2
関連項目:
Map

containsKey

public boolean containsKey(Object key)
指定されたオブジェクトが、ハッシュテーブルのキーかどうかを判定します。

定義:
インタフェース Map 内の containsKey
パラメータ:
key - 可能なキー
戻り値:
equals メソッドで決められているように、指定されたオブジェクトがこのハッシュテーブルのキーである場合は true、そうでない場合は false
例外:
NullPointerException - キーが null の場合
関連項目:
contains(Object)

get

public Object get(Object key)
指定されたキーにマップされている、ハッシュテーブルの値を返します。

定義:
インタフェース Map 内の get
定義:
クラス Dictionary 内の get
パラメータ:
key - ハッシュテーブルのキー
戻り値:
指定されたキーにマップされているハッシュテーブルの値。指定されたキーにマップされている値がない場合は null
例外:
NullPointerException - キーが null の場合
関連項目:
put(Object, Object)

rehash

protected void rehash()
ハッシュテーブルの容量を増やし、それを内部的に再編成して、エントリを調整してアクセスをより効率的にします。ハッシュテーブルにあるキーの数がハッシュテーブルの容量と負荷係数を超えると、このメソッドが自動的に呼び出されます。


put

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)

remove

public Object remove(Object key)
キー (およびそれに対応する値) をハッシュテーブルから削除します。そのキーがハッシュテーブルにない場合は、何も行いません。

定義:
インタフェース Map 内の remove
定義:
クラス Dictionary 内の remove
パラメータ:
key - 削除するキー
戻り値:
このハッシュテーブル内でキーに割り当てられていた値。値が割り当てられていなかった場合は null
例外:
NullPointerException - キーが null の場合

putAll

public void putAll(Map t)
指定された Map から Hashtable にすべてのマッピングをコピーします。それらのマッピングは、指定された Map に現在あるキーに対して Hashtable が持っていたマッピングを置き換えます。

定義:
インタフェース Map 内の putAll
パラメータ:
t - マップに格納されるマッピング
例外:
NullPointerException - 指定されたマップが null の場合
導入されたバージョン:
1.2

clear

public void clear()
このハッシュテーブルを消去して、キーがない状態にします。

定義:
インタフェース Map 内の clear

clone

public Object clone()
ハッシュテーブルのコピーを作成します。ハッシュテーブルの構造自体はすべてコピーされますが、キーおよび値は複製されません。これは、比較的負担の大きい操作です。

オーバーライド:
クラス Object 内の clone
戻り値:
ハッシュテーブルの複製
関連項目:
Cloneable

toString

public String toString()
Hashtable オブジェクトの文字列表現を、ASCII 文字「」(コンマとスペース) で区切られ括弧で囲んだエントリのセットの形式で返します。各エントリはキー、等符号 =、および関連した要素として描画され、toString メソッドはキーおよび要素を文字列に変換するために使用されます。

ObjecttoString メソッドにオーバーライドします。

オーバーライド:
クラス Object 内の toString
戻り値:
このハッシュテーブルの文字列表現

keySet

public Set keySet()
Hashtable に含まれているキーの Set ビューを返します。Set は Hashtable と連動しているので、Hashtable に対する変更は Set に反映され、また、Set に対する変更は Hashtable に反映されます。Set は、要素の削除 (Hashtable からの対応するエントリの削除) をサポートしていますが、要素の追加はサポートしていません。

定義:
インタフェース Map 内の keySet
戻り値:
マップに含まれているキーのセットビュー
導入されたバージョン:
1.2

entrySet

public Set entrySet()
この Hashtable に含まれているエントリの Set ビューを返します。このコレクションの各要素は Map.Entry です。Set は Hashtable と連動しているので、Hashtable に対する変更は Set に反映され、また、Set に対する変更は Hashtable に反映されます。Set は、要素の削除 (Hashtable からの対応するエントリの削除) をサポートしていますが、要素の追加はサポートしていません。

定義:
インタフェース Map 内の entrySet
戻り値:
マップ内に保持されているマッピングのセットビュー
導入されたバージョン:
1.2
関連項目:
Map.Entry

values

public Collection values()
この Hashtable 内に保持されている値の Collection ビューを返します。Collection は Hashtable と連動しているので、Hashtable に対する変更は Collection に反映され、また、Collection に対する変更は Hashtable に反映されます。Collection は、要素の削除 (Hashtable からの対応するエントリの削除) をサポートしていますが、要素の追加はサポートしていません。

定義:
インタフェース Map 内の values
戻り値:
マップ内に保持されている値のコレクションビュー
導入されたバージョン:
1.2

equals

public boolean equals(Object o)
Map インタフェースでの定義に従って、指定された Object とこの Map を比較して等しいかどうかを判定します。

定義:
インタフェース Map 内の equals
オーバーライド:
クラス Object 内の equals
パラメータ:
o - この Hashtable と等しいかどうかを比較するオブジェクト
戻り値:
指定された Object がこの Map と等しい場合は true
導入されたバージョン:
1.2
関連項目:
Map.equals(Object)

hashCode

public int hashCode()
Map インタフェースの定義に従って、この Map のハッシュコード値を返します。

定義:
インタフェース Map 内の hashCode
オーバーライド:
クラス Object 内の hashCode
戻り値:
このオブジェクトのハッシュコード値
導入されたバージョン:
1.2
関連項目:
Map.hashCode()

CDC 1.1.2

Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. Use of this specification is subject to license terms.