Java Hashtable クラス
Hashtable は、元の java.util の一部であり、Dictionary の具体的な実装です。
しかし、Java 2 で再構築された Hashtable は Map インターフェースを実装しているため、Hashtable は現在コレクションフレームワークに統合されています。HashMap クラスと非常に似ていますが、同期をサポートしています。
HashMap と同様に、Hashtable はハッシュテーブルにキー/値ペアを格納します。ハッシュテーブルを使用する際には、キーとして使用するオブジェクトと、そのキーにリンクする値を指定します。
次に、そのキーはハッシュ処理され、得られたハッシュコードが、テーブルに格納されている値のインデックスとして使用されます。
Hashtable は 4 つのコンストラクターを定義しています。1 つ目はデフォルトコンストラクターです:
Hashtable()
2 つ目のコンストラクターは、指定されたサイズのハッシュテーブルを作成します:
Hashtable(int size)
3 つ目のコンストラクターは、指定されたサイズのハッシュテーブルを作成し、fillRatio によって充填率を指定します。
充填率は 0.0 から 1.0 の間でなければならず、ハッシュテーブルがサイズ変更される前にどの程度満たされるかを決定します:
Hashtable(int size,float fillRatio)
4 つ目のコンストラクターは、M の要素を初期要素とするハッシュテーブルを作成します。
ハッシュテーブルの容量は M の 2 倍に設定されます。
Hashtable(Map m)
Hashtable は、Map インターフェースで定義されたメソッドに加えて、次のメソッドも定義しています:
| 番号 | メソッドの説明 |
|---|---|
| 1 |
void clear( ) このハッシュテーブルをクリアして、キーを何も含まないようにします。 |
| 2 |
Object clone( ) このハッシュテーブルの浅いコピーを作成します。 |
| 3 |
boolean contains(Object value) このマッピングテーブル内に、指定された値に関連付けられたキーが存在するかどうかをテストします。 |
| 4 |
boolean containsKey(Object key) 指定されたオブジェクトがこのハッシュテーブルのキーであるかどうかをテストします。 |
| 5 |
boolean containsValue(Object value) この Hashtable が 1 つ以上のキーをこの値にマッピングしている場合は true を返します。 |
| 6 |
Enumeration elements( ) このハッシュテーブル内の値の列挙を返します。 |
| 7 |
Object get(Object key) 指定されたキーがマッピングされている値を返します。このマッピングにそのキーのマッピングが含まれていない場合は null を返します。より正確には、このマッピングが (key.equals(k)) を満たすキー k から値 v へのマッピングを含む場合、このメソッドは v を返します。それ以外の場合は null を返します。 |
| 8 |
boolean isEmpty( ) このハッシュテーブルに値にマッピングされたキーがないかどうかをテストします。 |
| 9 |
Enumeration keys( ) このハッシュテーブル内のキーの列挙を返します。 |
| 10 |
Object put(Object key, Object value) 指定されたキーを、このハッシュテーブル内の指定された値にマッピングします。 |
| 11 |
void rehash( ) このハッシュテーブルの容量を増やし、要素をより効率的に収容およびアクセスできるように内部を再編成します。 |
| 12 |
Object remove(Object key) ハッシュテーブルからそのキーとそれに対応する値を削除します。 |
| 13 |
int size( ) このハッシュテーブル内のキーの数を返します。 |
| 14 |
String toString( ) この Hashtable オブジェクトの文字列表現を返します。形式は、ASCII 文字 ", " (カンマとスペース) で区切られ、括弧で囲まれた一連のエントリです。 |
例
以下のプログラムは、このデータ構造がサポートするいくつかのメソッドを示しています:
import java.util.*;
public class HashTableDemo {
public static void main(String args[]) {
// Create a hash map
Hashtable balance = new Hashtable();
Enumeration names;
String str;
double bal;
balance.put("Zara", new Double(3434.34));
balance.put("Mahnaz", new Double(123.22));
balance.put("Ayan", new Double(1378.00));
balance.put("Daisy", new Double(99.22));
balance.put("Qadir", new Double(-19.08));
// Show all balances in hash table.
names = balance.keys();
while(names.hasMoreElements()) {
str = (String) names.nextElement();
System.out.println(str + ": " +
balance.get(str));
}
System.out.println();
// Deposit 1,000 into Zara's account
bal = ((Double)balance.get("Zara")).doubleValue();
balance.put("Zara", new Double(bal+1000));
System.out.println("Zara's new balance: " +
balance.get("Zara"));
}
}
上記の例をコンパイルして実行した結果は次のとおりです:
Qadir: -19.08 Zara: 3434.34 Mahnaz: 123.22 Daisy: 99.22 Ayan: 1378.0 Zara's new balance: 4434.34
その他の拡張
Java データ構造