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);
      }
}


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