≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ 『第16章』
Mapの使い方
マップとは2つの情報をキーと値のペアとして格納するデータ構造。格納した値はキーを指定して読み書きできる。実装の中でも特に多く利用されるのは、java.util.HashMapクラス。
《HashMapが備えるメソッド》
操作 | 戻り値 | メソッド | 意味 |
---|---|---|---|
追加 | 値 | put(キー,値) | マップにキーと値のペアを格納する |
取得 | 値 | get(キー) | キーに対応する値を取得(なければnull) |
調査 | int | size() | 格納されているペア数を数える |
boolean | isEmpty() | 要素数がゼロであるかを判定 | |
boolean | containsKey(キー) | 指定データがキーに含まれているかを判定 | |
boolean | containsValue(値) | 指定データが値に含まれているかを判定 | |
削除 | void | clear() | 要素をすべて削除する |
値 | remove(キー) | 指定した内容の要素を削除する | |
その他 | Set<キー> | keySet() | 格納されているキーの一覧を返す |
なお、Mapでは値の重複は許されるが、キーの重複は許されない。同じキーで異なる値をput()すると、後から格納した値で上書きされてしまうので注意が必要。
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> prefs = new HashMap<String, Integer>();
prefs.put("京都府", 255);
prefs.put("東京都", 1261);
prefs.put("熊本県", 181);
int tokyo = prefs.get("東京都"); // キーを指定し値を取得
System.out.println("東京都の人口は、" + tokyo);
prefs.remove("京都府"); // 削除
prefs.put("熊本県", 182); // 値を上書き
int kumamoto = prefs.get("熊本県");
System.out.println("熊本県の人口は、" + kumamoto);
}
}
中身を1つずつ取り出す
ListやSetと同様の方法で取り出そうとするとエラーが出てしまう。
マップに格納されたデータを1つずつ取り出すには、「キーの一覧を取得してから、各キーについて対応する値を取得」の2段階手続きをする方法が踏襲しやすい。
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> prefs = new HashMap<String, Integer>();
prefs.put("京都府", 255);
prefs.put("東京都", 1261);
prefs.put("熊本県", 181);
for(String key : prefs.keySet()) {
int value = prefs.get(key);
System.out.println(key + "の人口は、" + value);
}
}
}