Hashtableクラスでデータ格納、検索する
import java.util.*;
class ExmHash {
public static void main(String[] args) {
//Hashtable 作成
Hashtable ht = new Hashtable();
ht.put("program1", new PrgProfile("prgName1", "Bill"));
ht.put("program2", new PrgProfile("prgName2", "Tobal"));
ht.put("program3", new PrgProfile("prgName3", "Yosaku"));
//data取出し
PrgProfile pp = (PrgProfile)ht.get(args[0]);
System.out.println(args[0] + ":" + pp.getProfile());
}
}
class PrgProfile {
private String pname;
private String author;
PrgProfile(String pname, String author) {
this.pname = pname;
this.author = author;
}
public String getProfile() {
return (pname + " " + author);
}
}
実行結果
起動時の変数としてProgramIDを入力すると、プログラム名と作成者がコンソールに表示されます。
Vector classとHashtable class
Vectorクラスを使うことで、配列の要素の挿入、削除が可能となりますが、
Vectorクラスによるデータの取出し,格納時にKEYとできるのはINDEX(何番目かを表す数値)だけです。
ProgramIDからプログラム名を検索したい時など、"何番目に登録されている"と言った指定(INDEX)では大変不便です。
このような時に、KEYとその要素を登録し、データを取り出す時にはKEYの値でその要素を取り出す仕組みが必要です。
その仕組みを提供するクラスがHashtableクラスです。
<Hashtableの内容>
Key ProgramID String
value ProgramName String
Author String
<putメソッド>
put(Object key, Object value) でキーとデータを格納しています。
<getメソッド>
get(Object key) でデータを取出しています。
HashMap class
JDK1.2からHashtableとほぼ同機能のHashMapがリリースされました。
自分で格納して自分で取り出すのが気に入らないので、取り出すクラスと格納するクラスを分けました。
次頁にソースを掲載しています。(機能は同じです。例外処理を少し加えました)