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 classHashtable 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がリリースされました。


自分で格納して自分で取り出すのが気に入らないので、取り出すクラスと格納するクラスを分けました。
次頁にソースを掲載しています。(機能は同じです。例外処理を少し加えました)