HashMapクラスは、Mapインターフェイスの実装のひとつです。
HashMapについて詳細が気になる方は、説明書(API)を参照してください。Java SE 7(Java 1.7)の説明書(API)を掲示しておきます→HashMapクラス。
さっそく HashMapクラスを利用してみます。ジェネリクスも使用します。
ソースコードは以下の通り。
V301/MySystem.java
(ライブラリをそのまま利用します)
V301/V301.java
import java.util.HashMap; import java.util.Map; /** * HashMapを利用します。 */ public class V301 { /** * メインメソッド。 * @param args 引数 */ public static void main(String[] args) { Map<String, String> weekdays = new HashMap<>(); weekdays.put("Monday", "月曜日"); weekdays.put("Tuesday", "火曜日"); weekdays.put("Wednesday", "水曜日"); weekdays.put("Thursday", "木曜日"); weekdays.put("Friday", "金曜日"); weekdays.put("Saturday", "土曜日"); weekdays.put("Sunday", "日曜日"); String input = MySystem.in.getString("曜日を英語で入力してください"); if(weekdays.containsKey(input)) { String value = weekdays.get(input); System.out.println(input + "は" + value + "です。"); } else { System.out.println("指定した曜日は見つかりませんでした。"); } } }
実行結果の例は以下の通り。
曜日を英語で入力してください? Wednesday Wednesdayは水曜日です。
キー(Wednesday)に対応した値(水曜日)が取得できています。また、ジェネリクスを使用しているため、明示的なキャストを記述しないでソースコードが構成されています。
HashMapクラスにおいて、キーから値を検索する場合、内部でequalsメソッドが使用されています。本節のプログラムのように、既存のクラス(本節の場合は String)を使用する場合は、equalsメソッドが適切にオーバーライドされているため問題ありませんが、自作のクラスをキーに設定する場合には、equalsメソッドを適切に実装してください。
HashMapクラスが登場する前の古い Javaでは、Hashtableクラスが用いられていました。現在ではほとんど使用されていません。