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)」といいます。ブラウザの「戻る」ボタンなどで再び同じデータをアクセスしたときにはこの保存しておいたデータを読み込むことができます。