JavaTM 2 Platform
Standard Ed. 5.0

java.util
クラス Hashtable<K,V>

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

public class Hashtable<K,V>
extends Dictionary<K,V>
implements Map<K,V>, 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 プラットフォーム v1.2 では、このクラスは Map を実装するために改良されているため、Java Collections Framework の一部になります。新しいコレクションの実装とは異なり、Hashtable は同期をとります。

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

通常、非同期の同時変更がある場合、確かな保証を行うことは不可能なので、反復子のフェイルファストの動作を保証することはできません。フェイルファスト反復子は最善努力原則に基づき、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<? extends K,? extends V> t)
          指定された Map と同じマッピングで新しいハッシュテーブルを生成します。
 
メソッドの概要
 void clear()
          このハッシュテーブルを消去して、キーがない状態にします。
 Object clone()
          ハッシュテーブルのコピーを作成します。
 boolean contains(Object value)
          指定された値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。
 boolean containsKey(Object key)
          指定されたオブジェクトが、ハッシュテーブルのキーかどうかを判定します。
 boolean containsValue(Object value)
          Hashtable が 1 つまたは複数のキーをこの値にマッピングする場合に true を返します。
 Enumeration<V> elements()
          ハッシュテーブルにある値のリストを返します。
 Set<Map.Entry<K,V>> entrySet()
          Hashtable に格納されているエントリの Set ビューを返します。
 boolean equals(Object o)
          Map インタフェースでの定義に従って、指定された Object とこの Map を比較して等しいかどうかを判定します。
 V get(Object key)
          指定されたキーにマップされている、ハッシュテーブルの値を返します。
 int hashCode()
          Map インタフェースの定義に従って、この Map のハッシュコード値を返します。
 boolean isEmpty()
          値にマップされているキーが、ハッシュテーブルにあるかどうかを判定します。
 Enumeration<K> keys()
          ハッシュテーブルにあるキーのリストを返します。
 Set<K> keySet()
          Hashtable に格納されているキーの Set ビューを返します。
 V put(K key, V value)
          ハッシュテーブルにおいて、指定された key を、指定された value にマップします。
 void putAll(Map<? extends K,? extends V> t)
          指定された Map から Hashtable にすべてのマッピングをコピーします。
protected  void rehash()
          ハッシュテーブルの容量を増やし、それを内部的に再編成して、エントリを調整してアクセスをより効率的にします。
 V remove(Object key)
          キー (およびそれに対応する値) をハッシュテーブルから削除します。
 int size()
          ハッシュテーブルにあるキーの数を返します。
 String toString()
          Hashtable オブジェクトの文字列表現を、ASCII 文字「」(コンマとスペース) で区切られ括弧で囲んだエントリのセットの形式で返します。
 Collection<V> 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 - 初期容量がゼロより小さい場合

Hashtable

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


Hashtable

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

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

size

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

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

isEmpty

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

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

keys

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

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

elements

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

定義:
クラス Dictionary<K,V> 内の 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<K,V> 内の containsValue
パラメータ:
value - ハッシュテーブルにあるかどうかを判定される値
戻り値:
マップが 1 つまたは複数のキーと指定された値をマッピングしている場合は true
例外:
NullPointerException - 値が null の場合
導入されたバージョン:
1.2
関連項目:
Map

containsKey

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

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

get

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

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

rehash

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


put

public V put(K key,
             V value)
ハッシュテーブルにおいて、指定された key を、指定された value にマップします。キーや値は null にすることはできません。

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

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

remove

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

定義:
インタフェース Map<K,V> 内の remove
定義:
クラス Dictionary<K,V> 内の remove
パラメータ:
key - 削除するキー
戻り値:
ハッシュテーブルでそのキーにマップされている値。マップされている値がない場合は null
例外:
NullPointerException - キーが null の場合

putAll

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

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

clear

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

定義:
インタフェース Map<K,V> 内の clear

clone

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

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

toString

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

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

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

keySet

public Set<K> keySet()
Hashtable に格納されているキーの Set ビューを返します。Set は Hashtable を基にするので、Hashtable への変更は Set で反映され、逆に Set への変更は Hashtable で反映されます。Set は要素の削除 (Hashtable からの対応するエントリの削除) をサポートしますが、要素の追加はサポートしません。

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

entrySet

public Set<Map.Entry<K,V>> entrySet()
Hashtable に格納されているエントリの Set ビューを返します。このコレクションの各要素は Map.Entry です。Set は Hashtable を基にするので、Hashtable への変更は Set で反映され、逆に Set への変更は Hashtable で反映されます。Set は要素の削除 (Hashtable からの対応するエントリの削除) をサポートしますが、要素の追加はサポートしません。

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

values

public Collection<V> values()
Hashtable に格納されている値の Collection ビューを返します。Collection は Hashtable を基にするので、Hashtable への変更は Collection で反映され、逆に Collection への変更は Hashtable で反映されます。Collection は要素の削除 (Hashtable からの対応するエントリの削除) をサポートしますが、要素の追加はサポートしません。

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

equals

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

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

hashCode

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

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

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。