【Java】連想配列、Mapの使い方と種類

java Java

※この記事にはプロモーションが含まれています。

Javaでキーと値をセットにして管理できる連想配列、Mapの使い方と、種類について説明したいと思います。

スポンサーリンク

Mapの宣言と初期化

Mapの宣言と初期化は、下記のようにデータ型を指定してHashMapによって初期化します。

Map<キーのデータ型, 値のデータ型> map1 = new HashMap<キーのデータ型, 値のデータ型>();

データ型を変えることで、様々なリストを使う事が出来ます

// Integerでキーを指定し、Integerで値を格納するMap
Map<Integer, Integer> map1 = new HashMap<Integer, Integer>();

// Integerでキーを指定し、Stringで値を格納するMap
Map<Integer, String> map2 = new HashMap<Integer, String>();

// Stringでキーを指定し、Stringで値を格納するMap
Map<String, String> map3 = new HashMap<String, String>();

値の追加 put

Mapへ値を追加するにはputを使います、put(キー, 値)と書くことで、キーに紐づけて値を追加できます。

// Integerでキーを指定し、Stringで値を格納するMap
Map<Integer, String> map1 = new HashMap<Integer, String>();

// put(キー, 値)で追加する
map1.put(1, "前沢牛"); // キーが1で"前沢牛"を格納
map1.put(2, "葉山牛"); // キーが2で"葉山牛"を格納
map1.put(3, "飛騨牛"); // キーが3で"飛騨牛"を格納

値の取得 get

Mapから値を取得するにはgetを使います、get(キー)と書くことで、キーに紐づいた値が取得できます。

// Stringでキーを指定し、Stringで値を格納するMap
Map<String, String> map1 = new HashMap<String, String>();

// put(キー, 値)で追加する
map1.put("A", "伊賀牛"); // キーが"A"で"伊賀牛"を格納
map1.put("B", "近江牛"); // キーが"B"で"近江牛"を格納
map1.put("C", "熊野牛"); // キーが"C"で"熊野牛"を格納

System.out.println(map1.get("A"));
System.out.println(map1.get("B"));
System.out.println(map1.get("C"));

実行結果

伊賀牛
近江牛
熊野牛

Mapのキーをfor文で取得する方法 keySet

Mapから格納されているキーを全て取得する方法として、for文でkeySetを使います。

// Stringでキーを指定し、Stringで値を格納するMap
Map<String, String> map1 = new HashMap<String, String>();

// put(キー, 値)で追加する
map1.put("A", "伊賀牛"); // キーが"A"で"伊賀牛"を格納
map1.put("B", "近江牛"); // キーが"B"で"近江牛"を格納
map1.put("C", "熊野牛"); // キーが"C"で"熊野牛"を格納

for (String key : map1.keySet()) {
	System.out.println("キー:" + key);
}

実行結果

キー:A
キー:B
キー:C

Mapの値をfor文で取得する方法 values

Mapから格納されている値を全て取得する方法として、for文でvaluesを使います。

// Stringでキーを指定し、Stringで値を格納するMap
Map<String, String> map1 = new HashMap<String, String>();

// put(キー, 値)で追加する
map1.put("A", "伊賀牛"); // キーが"A"で"伊賀牛"を格納
map1.put("B", "近江牛"); // キーが"B"で"近江牛"を格納
map1.put("C", "熊野牛"); // キーが"C"で"熊野牛"を格納

for (String value : map1.values()) {
	System.out.println("値:" + value);
}

実行結果

値:伊賀牛
値:近江牛
値:熊野牛

Mapの種類 HashMap、TreeMap、LinkedHashMap

MapにはHashMap、TreeMap、LinkedHashMapと3種類のMapがあります。

HashMap格納された中身の順番はバラバラ、キーでソートされてるように見えるけど保証はない、
だけど早い
TreeMapキーでソートされた状態で格納される
LinkedHashMap追加した順番で格納される

HashMap

HashMap<String, String> hashMap = new HashMap<String, String>();

hashMap.put("C", "神戸ビーフ");
hashMap.put("B", "米沢牛");
hashMap.put("A", "松坂牛");

System.out.println("HashMap");
for (String key : hashMap.keySet()) {
    System.out.println("キー:" + key + ", 値:" + hashMap.get(key));
}

実行結果

HashMap
キー:A, 値:松坂牛
キー:B, 値:米沢牛
キー:C, 値:神戸ビーフ

TreeMap

TreeMap<String, String> treeMap = new TreeMap<String, String>();

treeMap.put("C", "神戸ビーフ");
treeMap.put("B", "米沢牛");
treeMap.put("A", "松坂牛");

System.out.println("TreeMap");
for (String key : treeMap.keySet()) {
	System.out.println("キー:" + key + ", 値:" + hashMap.get(key));
}

実行結果

TreeMap
キー:A, 値:松坂牛
キー:B, 値:米沢牛
キー:C, 値:神戸ビーフ

LinkedHashMap

LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<String, String>();

linkedHashMap.put("C", "神戸ビーフ");
linkedHashMap.put("B", "米沢牛");
linkedHashMap.put("A", "松坂牛");

System.out.println("LinkedHashMap");
for (String key : linkedHashMap.keySet()) {
	System.out.println("キー:" + key + ", 値:" + hashMap.get(key));
}

実行結果

LinkedHashMap
キー:C, 値:神戸ビーフ
キー:B, 値:米沢牛
キー:A, 値:松坂牛

Javaの連想配列にはいろいろ種類があり、それぞれ出来ることが違うので、用途によって使い分けできるようになると、とても便利です。

コメント

タイトルとURLをコピーしました