Hashtableクラスでデータ格納、検索する
import java.util.*;
/* データを検索するクラス
*/
class HashValueGet {
public static void main(String[] args) {
try {
ExmHash2 eh2 = new ExmHash2();
PrgProfile pp = (PrgProfile)eh2.get(args[0]);
if (pp != null) {
System.out.println(args[0] + ":" + pp.getProfile());
} else {
System.out.println("該当するプログラムはありません");
}
} catch(ArrayIndexOutOfBoundsException ae) {
System.out.println("引数の入力に誤りがあります");
ae.printStackTrace();
System.exit(-1);
} catch(Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
}
/* Hashtableを保持するクラス
*/
class ExmHash2 {
protected Hashtable ht;
// コンストラクタ
ExmHash2() {
ht = new Hashtable();
ht.put("program1", new PrgProfile("prgName1", "Bill"));
ht.put("program2", new PrgProfile("prgName2", "Tobal"));
ht.put("program3", new PrgProfile("prgName3", "Yosaku"));
}
public Object get( Object key ) {
return(ht.get(key));
}
}
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);
}
}
自分で格納して自分で取り出すのが気に入らないので、取り出すクラスと格納するクラスを分けました。
機能は前作と同じです。(例外処理を少し加えました)