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クラスが用いられていました。現在ではほとんど使用されていません。