Java プラットフォーム 1.2

java.util
クラス Hashtable

java.lang.Object
  |
  +--java.util.Dictionary
        |
        +--java.util.Hashtable
直接の既知のサブクラス:
Properties, UIDefaults

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);
     }
 

JDK1.2 では、このクラスは Map を実装するために改良されているため、Java Collections Framework の一部になります。新しいコレクションの実装とは異なり、Hashtable は同期をとります。

Hashtable のすべての「コレクションビューメソッド」によって返される Collection の iterator メソッドおよび listIterator メソッドによって返される Iterator は、「フェイルファスト」です。Iterator の作成後に、Iterator 自体の remove メソッドまたは add メソッド以外の方法で Hashtable が構造的に変更されると、Iterator は ConcurrentModificationException をスローします。したがって、同時変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、速やかにかつクリーンに失敗します。Hashtable のキーメソッドおよび値メソッドによって返される Enumerations は、フェイルファストではありません。

導入されたバージョン:
JDK1.0
関連項目:
Object.equals(java.lang.Object), Object.hashCode(), rehash(), Collection, Map, HashMap, TreeMap, 直列化された形式

コンストラクタの概要
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
 

コンストラクタの詳細

Hashtable

public Hashtable(int initialCapacity,
                 float loadFactor)
指定された初期容量と負荷係数で新しい空のハッシュテーブルを生成します。
パラメータ:
initialCapacity - ハッシュテーブルの初期容量
loadFactor - ハッシュテーブルの負荷係数
例外:
IllegalArgumentException - 初期容量が 0 より小さいか、負荷係数が正ではない場合

Hashtable

public Hashtable(int initialCapacity)
指定された初期容量およびデフォルトの負荷係数 (0.75) で新しい空のハッシュテーブルを生成します。
パラメータ:
initialCapacity - ハッシュテーブルの初期容量
例外:
IllegalArgumentException - 初期容量が 0 より小さい場合

Hashtable

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

Hashtable

public Hashtable(Map t)
指定された Map と同じマッピングで新しいハッシュテーブルを生成します。ハッシュテーブルは、指定された Map のエントリ数の 2 倍の容量または 11 (どちらか大きい方)、およびデフォルトの負荷係数 (0.75) で作成されます。
導入されたバージョン:
JDK1.2
メソッドの詳細

size

public int size()
ハッシュテーブルにあるキーの数を返します。
定義:
インタフェース Map 内の size
戻り値:
ハッシュテーブルにあるキーの数
オーバーライド:
クラス Dictionary 内の size

isEmpty

public boolean isEmpty()
値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。
定義:
インタフェース Map 内の isEmpty
戻り値:
値にマップされているキーがハッシュテーブルにない場合は true、ある場合は false
オーバーライド:
クラス Dictionary 内の isEmpty

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 - この Hashtable にあることが判定される値
導入されたバージョン:
JDK1.2
関連項目:
Map

containsKey

public boolean containsKey(Object key)
指定されたオブジェクトが、ハッシュテーブルのキーかどうかを判定します。
定義:
インタフェース Map 内の containsKey
パラメータ:
key - 調べるキー
戻り値:
equals メソッドで決められているように、指定されたオブジェクトがこのハッシュテーブルのキーである場合は true、そうでない場合は false
関連項目:
contains(Object)

get

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

rehash

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

put

public Object put(Object key,
                  Object value)
ハッシュテーブルにおいて、指定された key を、指定された value にマップします。 キーや値は null であってはなりません。

この値は、元のキーと等しいキーを指定して get メソッドを呼び出すことによって取り出すことができます。

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

remove

public Object remove(Object key)
キー (およびそれに対応する値) をハッシュテーブルから削除します。そのキーがハッシュテーブルにない場合は、何も行いません。
定義:
インタフェース Map 内の remove
パラメータ:
key - 削除するキー
戻り値:
ハッシュテーブルでそのキーにマップされている値。マップされている値がない場合は null
オーバーライド:
クラス Dictionary 内の remove

putAll

public void putAll(Map t)
指定された Map から Hashtable にすべてのマッピングをコピーします。それらのマッピングは、指定された Map に現在あるキーに対して Hashtable が持っていたマッピングを置き換えます。
定義:
インタフェース Map 内の putAll
導入されたバージョン:
JDK1.2

clear

public void clear()
このハッシュテーブルをクリアして、キーがない状態にします。
定義:
インタフェース Map 内の clear

clone

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

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
導入されたバージョン:
JDK1.2

entrySet

public Set entrySet()
Hashtable に格納されているエントリの Set ビューを返します。このコレクションの各要素は Map.Entry です。Set は Hashtable を基にするので、Hashtable への変更は Set で反映され、逆に Set への変更は Hashtable で反映されます。Set は要素の削除 (Hashtable からの対応するエントリの削除) をサポートしますが、要素の追加はサポートしません。
定義:
インタフェース Map 内の entrySet
導入されたバージョン:
JDK1.2
関連項目:
Map.Entry

values

public Collection values()
Hashtable に格納されている値の Collection ビューを返します。Collection は Hashtable を基にするので、Hashtable への変更は Collection で反映され、逆に Collection への変更は Hashtable で反映されます。Collection は要素の削除 (Hashtable からの対応するエントリの削除) をサポートしますが、要素の追加はサポートしません。
定義:
インタフェース Map 内の values
導入されたバージョン:
JDK1.2

equals

public boolean equals(Object o)
Map インタフェースでの定義に従って、指定された Object とこの Map を比較して等しいかどうかを判定します。
定義:
インタフェース Map 内の equals
戻り値:
指定された Object がこの Map と等しい場合は true
オーバーライド:
クラス Object 内の equals
導入されたバージョン:
JDK1.2
関連項目:
Map.equals(Object)

hashCode

public int hashCode()
Map インタフェースの定義に従って、この Map のハッシュコード値を返します。
定義:
インタフェース Map 内の hashCode
オーバーライド:
クラス Object 内の hashCode
導入されたバージョン:
JDK1.2
関連項目:
Map.hashCode()

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.