Hashtable は大量のデータから目的のデータを高速に検索する機能を持っているクラスです。Hashtale では Vector と異なり、同じキーのデータを複数保持することができません。もしも同じキーのデータを指定したときには、古いオブジェクトは新しいオブジェクトで上書きされます。
Hashtableは、沢山のものの中から一つのものを選ぶという仕事を、コンピュータにとって効率的に行おうとするための工夫がなされています。
Hashtable クラスの主なメソッドの一部の例です。
以下は、キーと値を put メソッド、get メソッドを使用して格納・取得するプログラムの例です。
import java.util.*;
public class HashTableTest {
public static void main(String[] args) {
//HashTableのインスタンスを作成
Hashtable ht = new Hashtable();
ht.put("test1", "case1");
ht.put("test2", "case2");
ht.put("test3", "case3");
ht.put("test4", "case4");
ht.put("test5", "case5");
Enumeration keys = ht.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
System.out.println(key + ht.get(key));
}
}
}
以下が実行結果になります。
test5case5
test4case4
test3case3
test2case2
test0case0
Hashtable は、その性質を生かして、繰り返し利用されるリソースの cache としてよく使われます。例えば、大きなイメージデータは、ネットワーク上でやりとりすると時間がかかるのですが、プログラム中で一度使ったイメージを、 Hashtableにしまっておき、同じプログラム中で同じイメージに、再度要求があったら、こんどは、Hashtableからデータをとるというような使い方をします。
通常 Web ブラウザは一度読みこんだデータを一旦保存しておきます。これを「キャッシュ (Cache)」といいます。ブラウザの「戻る」ボタンなどで再び同じデータをアクセスしたときにはこの保存しておいたデータを読み込むことができます。