- 型パラメータ:
- K- このマップで保持されるキーの型
- V- マップされる値の型
- すべての実装されたインタフェース:
- Serializable,- Cloneable,- Map<K,- V> 
- 直系の既知のサブクラス:
- Properties,- UIDefaults
nullオブジェクト以外であれば、どのオブジェクトでもキーや値に使用することができます。  
 ハッシュ表にオブジェクトを格納したり、そこから取り出したりするには、キーとして使用するオブジェクトに、hashCodeメソッドとequalsメソッドが実装されていなければなりません。 
 Hashtableのインスタンスには、その性能に影響を与える2つのパラメータである初期容量および負荷係数があります。 容量はハッシュ表のバケット数であり、初期容量は単純にハッシュ表が作成された時点での容量です。 ハッシュ表はオープンであることに注意してください。「ハッシュの衝突」という、1つのバケットが複数のエントリを格納する現象があり、その場合それらのエントリはシーケンシャル・サーチされることになります。 負荷係数は、ハッシュ表がどの程度いっぱいになると、その容量が自動的に増加されるかの基準です。 初期容量と負荷係数パラメータは、実装のヒントに過ぎません。 rehashメソッドがいつ呼び出されるか、および呼び出されるかどうかは、実装により異なります。 
 通常、デフォルトの負荷係数(.75)では、時間コストとスペース・コストの釣合いを取ります。 値を大きくすると領域のオーバーヘッドは減少しますが、エントリ(getやputなど、ほとんどのHashtable操作に反映されます)の検索にかかる時間が長くなります。 
 初期容量により、浪費スペースと(時間のかかる) rehashオペレーションの需要との間の釣合いが制御されます。 初期容量が、Hashtableに含まれる最大エントリ数をその負荷係数で除算した場合、rehash操作は「永遠」になりません。 ただし、初期容量を高く設定しすぎると、スペースの浪費になります。 
 Hashtableに多くのエントリを入れる場合は、この表を十分に大きな容量で作成する方が、必要に応じてハッシュを自動的にやり直して表を大きくするよりも、エントリを効率的に挿入することができます。 
この例は、数値のハッシュ表を作成します。 この例では、数値の名前をキーとして使います。
   
   Hashtable<String, Integer> numbers
     = new Hashtable<String, Integer>();
   numbers.put("one", 1);
   numbers.put("two", 2);
   numbers.put("three", 3);
 数値を取り出すには、次のコードを使います。
   
   Integer n = numbers.get("two");
   if (n != null) {
     System.out.println("two = " + n);
   }
 このクラスの"コレクション表示メソッド"のすべてによって返されるコレクションのiteratorメソッドによって返されるイテレータは、fail-fastです: イテレータの作成後にHashtableが構造的に変更された場合、イテレータ独自のremoveメソッド以外のすべての方法で、イテレータはConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。 Hashtableのkeysおよびelementsメソッドによって返される列挙は、高速ではありません。ハッシュ表が列挙の作成後にいつでも構造的に変更される場合、列挙の結果は定義されません。 
 
通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、イテレータのフェイルファストの動作を保証することはできません。 フェイルファスト・イテレータは、ベスト・エフォート・ベースでConcurrentModificationExceptionをスローします。 したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。イテレータのフェイルファストの動作はバグを検出するためにのみ使用すべきです。 
 
このクラスは、Java 2プラットフォームv1.2の時点でMapインタフェースを実装するように改良された結果、Java Collections Frameworkのメンバーとなりました。 新しいコレクションの実装とは異なり、Hashtableは同期をとります。 スレッドセーフな実装が必要ない場合は、Hashtableの代わりにHashMapを使用することをお薦めします。 スレッドセーフで高度な並列実装が必要な場合は、Hashtableの代わりにConcurrentHashMapを使用することをお薦めします。 
- 導入されたバージョン:
- 1.0
- 関連項目:
- 
コンストラクタのサマリーコンストラクタ
- 
メソッドのサマリー修飾子と型メソッド説明voidclear()このハッシュ表をクリアして、キーがない状態にします。clone()ハッシュ表のコピーを作成します。指定されたキーとその現在のマップされた値のマッピングをコンピュートしようとします。現在のマッピング(オプションの操作)がない場合はnullです。computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) 指定されたキーが値(または、nullにマップされます。)にまだ関連付けられていない場合、指定されたマッピング関数を使用してその値をコンピュートし、null(オプションの操作)でないかぎりこのマップに入力します。computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) 指定されたキーの値が存在し、null以外の場合は、キーとその現在のマップされた値(オプションの操作)を指定して、新しいマッピングのコンピュートを試みます。boolean指定された値にマップされているキーが、ハッシュ表にあるかどうかを判定します。booleancontainsKey(Object key) 指定されたオブジェクトが、ハッシュ表のキーかどうかを判定します。booleancontainsValue(Object value) このハッシュ表が1つまたは複数のキーをこの値にマッピングする場合にtrueを返します。elements()ハッシュ表にある値のリストを返します。entrySet()このマップに含まれるマッピングのSetビューを返します。booleanMapインタフェースでの定義に従って、指定されたObjectとこのMapを比較して等しいかどうかを判定します。指定されたキーがマップされている値を返します。そのキーのマッピングがこのマップに含まれていない場合はnullを返します。inthashCode()Mapインタフェースの定義に従って、このMapのハッシュ・コード値を返します。booleanisEmpty()値にマップされているキーが、ハッシュ表にあるかどうかを判定します。keys()ハッシュ表にあるキーのリストを返します。keySet()このマップに含まれるキーのSetビューを返します。指定されたキーがまだ値に関連付けられていない場合、またはnullに関連付けられている場合は、指定されたnull以外の値(オプションの操作)に関連付けます。このハッシュ表で、指定されたkeyを指定されたvalueにマップします。void指定したマップからこのハッシュ表にすべてのマッピングをコピーします。protected voidrehash()ハッシュ表の容量を増やし、それを内部的に再編成して、エントリを調整してアクセスをより効率的にします。キー(およびそれに対応する値)をハッシュ表から削除します。intsize()ハッシュ表にあるキーの数を返します。toString()このHashtableオブジェクトの文字列表現を、エントリのセット(中括弧で囲まれ、ASCII文字"," (コンマとスペース)で区切られた)の形式で返します。values()このマップに含まれる値のCollectionビューを返します。インタフェースjava.util.Mapで宣言されたメソッドforEach, getOrDefault, putIfAbsent, remove, replace, replace, replaceAll
- 
コンストラクタの詳細- 
Hashtablepublic Hashtable(int initialCapacity, float loadFactor) 指定された初期容量と負荷係数で新しい空のハッシュ表を生成します。- パラメータ:
- initialCapacity- ハッシュ表の初期容量。
- loadFactor- ハッシュ表の負荷係数。
- 例外:
- IllegalArgumentException- 初期容量がゼロよりも小さい場合、または負荷係数が正でない場合。
 
- 
Hashtablepublic Hashtable(int initialCapacity) 指定された初期容量およびデフォルトの負荷係数(0.75)で新しい空のハッシュ表を生成します。- パラメータ:
- initialCapacity- ハッシュ表の初期容量。
- 例外:
- IllegalArgumentException- 初期容量が0よりも小さい場合。
 
- 
Hashtablepublic Hashtable()デフォルトの初期容量(11)と負荷係数(0.75)で新規の空のハッシュ表を生成します。
- 
Hashtable指定されたMapと同じマッピングで新しいハッシュ表を生成します。 指定されたMapのマッピングを保持するのに十分な初期容量、およびデフォルトの負荷係数(0.75)で、ハッシュ表は作成されます。- パラメータ:
- t- マッピングがこのマップに配置されるマップ。
- 例外:
- NullPointerException- 指定されたマップがnullの場合。
- 導入されたバージョン:
- 1.2
 
 
- 
- 
メソッドの詳細- 
size
- 
isEmpty
- 
keyspublic Enumeration<K> keys()ハッシュ表にあるキーのリストを返します。 戻されたオブジェクトの列挙メソッドを使用して、キーを順番にフェッチします。 キーの列挙中にハッシュ表が構造的に変更された場合、列挙の結果は未定義です。- 定義:
- クラスDictionary<K,のV> keys
- 戻り値:
- ハッシュ表にあるキーのリスト。
- 関連項目:
 
- 
elementspublic Enumeration<V> elements()ハッシュ表にある値のリストを返します。 これらの要素を順次に取り出すには、Enumerationのメソッドを使用します。 ハッシュテーブルが値の列挙中に構造的に変更された場合、列挙の結果は未定義です。- 定義:
- クラスDictionary<K,のV> elements
- 戻り値:
- ハッシュ表にある値のリスト。
- 関連項目:
 
- 
containspublic boolean contains(Object value) 指定された値にマップされているキーが、ハッシュ表にあるかどうかを判定します。 この操作は、containsKeyメソッドよりも負荷がかかります。このメソッドは、機能の点で containsValue(コレクション・フレームワークのMapインタフェースの一部)と同じです。- パラメータ:
- value- 検索する値
- 戻り値:
- equalsメソッドで決定されるこのハッシュ表の- value引数に一部のキーがマップされている場合のみ、- true。それ以外の場合は- false。
- 例外:
- NullPointerException- 値が- nullの場合
 
- 
containsValuepublic boolean containsValue(Object value) - 定義:
- インタフェースMap<K,内のV> containsValue
- パラメータ:
- value- ハッシュ表にあるかどうかを判定される値
- 戻り値:
- このマップが1つまたは複数のキーを指定された値にマッピングしている場合はtrue
- 例外:
- NullPointerException- 値が- nullの場合
- 導入されたバージョン:
- 1.2
 
- 
containsKeypublic boolean containsKey(Object key) 指定されたオブジェクトが、ハッシュ表のキーかどうかを判定します。- 定義:
- インタフェースMap<K,内のV> containsKey
- パラメータ:
- key- 使用可能なキー
- 戻り値:
- trueは、指定したオブジェクトが- equalsメソッドによって決定されるこのハッシュ表のキーである場合にのみ、- falseです。それ以外の場合は- falseです。
- 例外:
- NullPointerException- キーが- nullの場合
- 関連項目:
 
- 
get指定されたキーがマップされている値を返します。そのキーのマッピングがこのマップに含まれていない場合はnullを返します。つまり、このメソッドは、 (key.equals(k))となるキーkから値vへのマッピングがこのマップに含まれている場合はvを返し、それ以外の場合はnullを返します。 (このようなマッピングは1つのみ存在できます。)- 定義:
- インタフェースMap<K,内のV> get
- 定義:
- クラスDictionary<K,のV> get
- パラメータ:
- key- 関連付けられた値が返されるキー
- 戻り値:
- 指定されたキーがマップされている値。そのキーのマッピングがこのマップに含まれていない場合はnull
- 例外:
- NullPointerException- 指定されたキーがnullである場合
- 関連項目:
 
- 
rehashprotected void rehash()ハッシュ表の容量を増やし、それを内部的に再編成して、エントリを調整してアクセスをより効率的にします。 ハッシュ表にあるキーの数がハッシュ表の容量と負荷係数を超えると、このメソッドが自動的に呼び出されます。
- 
put
- 
remove
- 
putAll
- 
clear
- 
clone
- 
toString
- 
keySetこのマップに含まれるキーのSetビューを返します。 セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。 セットの反復処理中にマップが変更された場合、反復処理の結果は定義されていません(イテレータ自身のremoveオペレーションを除く)。 セットは要素の削除をサポートします。Iterator.remove、Set.remove、removeAll、retainAll、およびclearオペレーションで対応するマッピングをマップから削除します。addまたはaddAll操作はサポートされていません。
- 
entrySetこのマップに含まれるマッピングのSetビューを返します。 セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。 セットの反復処理中にマップが変更された場合、反復処理の結果は定義されません(イテレータ自身のremoveオペレーション、またはイテレータにより返されるマップ・エントリに対するsetValueオペレーションを除く)。 セットは要素の削除をサポートしており、対応するマッピングをマップから削除できます。削除は、Iterator.remove、Set.remove、removeAll、retainAll、およびclearオペレーションを通して行います。addまたはaddAll操作はサポートされていません。
- 
valuespublic Collection<V> values()このマップに含まれる値のCollectionビューを返します。 コレクションはマップと連動しているので、マップに対する変更はコレクションに反映され、またコレクションに対する変更はマップに反映されます。 コレクションの反復処理中にマップが変更された場合、反復処理の結果は定義されません(イテレータ自身のremoveオペレーションを除く)。 コレクションは要素の削除をサポートしており、対応するマッピングをマップから削除できます。削除は、Iterator.remove、Collection.remove、removeAll、retainAll、およびclearオペレーションを通して行います。addまたはaddAll操作はサポートされていません。
- 
equals
- 
hashCode
- 
computeIfAbsent指定されたキーが値(または、nullにマップされます。)にまだ関連付けられていない場合、指定されたマッピング関数を使用してその値をコンピュートし、null(オプションの操作)でないかぎりこのマップに入力します。マッピング関数が nullを返す場合、マッピングは記録されません。 マッピング関数自体が(unchecked)例外をスローした場合、例外は再スローされ、マッピングは記録されません。 もっとも一般的な用途は、次のように初期のマップされた値またはメモ化された結果として機能する新しいオブジェクトを構築することです。map.computeIfAbsent(key, k -> new Value(f(k)));または、1つのキーで複数の値をサポートする複数値マップ Map<K,Collection<V>>を実装することです。map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);マッピング関数は、計算中にこのマップを変更しないでください。 このメソッドは、マッピング関数が計算中にこのマップを変更した場合に、ベスト・エフォート・ベースで ConcurrentModificationExceptionをスローします。- 定義:
- インタフェースMap<K,内のV> computeIfAbsent
- パラメータ:
- key- 指定された値が関連付けられるキー
- mappingFunction- 値をコンピュートするマッピング関数
- 戻り値:
- 指定されたキーに関連付けられている現在の(既存の、または計算された)値。計算された値がnullである場合はnull
- 例外:
- ConcurrentModificationException- マップ機能がこのマップを変更したことが検出された場合
 
- 
computeIfPresent指定されたキーの値が存在し、null以外の場合は、キーとその現在のマップされた値(オプションの操作)を指定して、新しいマッピングのコンピュートを試みます。再マッピング関数が nullを返す場合、マッピングは削除されます。 再マッピング関数自体が(unchecked)例外をスローした場合、例外は再スローされ、現在のマッピングは変更されません。再マッピング関数は、計算中にこのマップを変更しないでください。 このメソッドは、再マッピング関数によって計算中にこのマップが変更された場合に、ベスト・エフォート・ベースで ConcurrentModificationExceptionをスローします。- 定義:
- インタフェースMap<K,内のV> computeIfPresent
- パラメータ:
- key- 指定された値が関連付けられるキー
- remappingFunction- 値をコンピュートするための再マップ関数
- 戻り値:
- 指定されたキーに関連付けられる新しい値。存在しない場合はnull
- 例外:
- ConcurrentModificationException- リマッピング機能がこのマップを変更したことが検出された場合
 
- 
compute指定されたキーとその現在のマップされた値のマッピングをコンピュートしようとします。現在のマッピング(オプションの操作)がない場合はnullです。 たとえば、次のように、値のマッピングにStringmsgを作成または追加します。
 (このような目的で使用するmap.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))merge()メソッドは、多くの場合、より単純です。)再マッピング関数が nullを返した場合、マッピングは削除されます。(最初に欠席した場合は不在のままです)。 再マッピング関数自体が(unchecked)例外をスローした場合、例外は再スローされ、現在のマッピングは変更されません。再マッピング関数は、計算中にこのマップを変更しないでください。 このメソッドは、再マッピング関数によって計算中にこのマップが変更された場合に、ベスト・エフォート・ベースで ConcurrentModificationExceptionをスローします。- 定義:
- インタフェースMap<K,内のV> compute
- パラメータ:
- key- 指定された値が関連付けられるキー
- remappingFunction- 値をコンピュートするための再マップ関数
- 戻り値:
- 指定されたキーに関連付けられる新しい値。存在しない場合はnull
- 例外:
- ConcurrentModificationException- リマッピング機能がこのマップを変更したことが検出された場合
 
- 
merge指定されたキーがまだ値に関連付けられていない場合、またはnullに関連付けられている場合は、指定されたnull以外の値(オプションの操作)に関連付けます。 それ以外の場合は、指定された再マッピング関数の結果で関連する値を置換し、結果がnullの場合は削除します。 このメソッドは、1つのキーに対する複数のマップされた値を結合するときに使用できます。 たとえば、次のように、値のマッピングにString msgを作成または追加します。map.merge(key, msg, String::concat)再マッピング関数が nullを返す場合、マッピングは削除されます。 再マッピング関数自体が(unchecked)例外をスローした場合、例外は再スローされ、現在のマッピングは変更されません。再マッピング関数は、計算中にこのマップを変更しないでください。 このメソッドは、再マッピング関数によって計算中にこのマップが変更された場合に、ベスト・エフォート・ベースで ConcurrentModificationExceptionをスローします。- 定義:
- インタフェースMap<K,内のV> merge
- パラメータ:
- key- 結果値が関連付けられるキー
- value- キーに関連付けられた既存の値にマージされるnull以外の値。既存の値がない場合、またはキーにnull値が関連付けられている場合は、キーに関連付けられるnull以外の値
- remappingFunction- 存在する場合に値を再計算するための再マッピング関数
- 戻り値:
- 指定されたキーに関連付けられた新しい値。キーに値が関連付けられなかった場合はnull
- 例外:
- ConcurrentModificationException- リマッピング機能がこのマップを変更したことが検出された場合
 
 
-