Javaを使う上で、ListやMapなどのコレクションを扱う処理は必須と言えます。
しかし、MapはListに比べて値の設定方法がやや複雑で、値を取得する方法も異なります。この記事では、Mapの値を取得する方法について、以下の内容で解説していきます。
- キーで値を取得する方法
- キーを全て取得する方法
- 値を全て取得する方法
- キーと値のペア(Entry)を全て取得する方法
- Listに変換して要素番号で値を取得する方法
今回はMapのキーや値を取得する方法についてわかりやすく解説していますので、ぜひ参考にしてください。
なお、Javaの記事については、こちらにまとめています。
Map(連想配列)とは
Mapとは、キーと値をペアで保持するコレクションです。コレクションとは、後からサイズを変更できる動的配列のようなものです。値を追加する時にはキーを指定し、キーを使って値を検索したり取り出すことができます。
キーの重複は許されず、キーと値は参照型のみ持つことができます。Mapは連想配列とも呼ばれます。
キーで値を取得する方法
Mapの値を取得するには、getメソッドを使用してMapのキーを指定し、キーに紐付いた値を取得します。実際にMapでキーを指定して値を取得する方法を、以下に記述します。
サンプルプログラム:
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { // Mapの宣言 Map<String, String> map = new HashMap<>(); // Mapにキーと値を格納 map.put("key1", "orange"); map.put("key2", "apple"); map.put("key3", "melon"); // Mapからデータを取得する System.out.println(map.get("key1")); System.out.println(map.get("key2")); System.out.println(map.get("key3")); } }
実行結果:
orange apple melon
紹介したサンプルコードでは、Map型の変数mapを宣言し、設定するキーとデータをString型で宣言しています。putメソッドを使用して、キー名とそれに紐づく値を格納しています。
putメソッドを使用して値を格納したら、getメソッドを使用してキーを指定することにより、格納した値を取り出すことができます。
キーを全て取得する方法
Mapのキーを全て取得するには、keySetメソッドを使用します。keySetメソッドはMapのキーをSet型で返すので、拡張for文を使って以下のように繰り返して取得することができます。
サンプルプログラム:
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("samurai", "侍"); map.put("engineer", "エンジニア"); for (String key : map.keySet()) { System.out.println(key); } } }
実行結果:
samurai engineer
値を全て取得する方法
Mapの値を全て取得するには、valuesメソッドを使用します。valuesメソッドもMapの値をSet型で返すので、拡張for文を使って以下のように繰り返して取得することができます。
サンプルプログラム:
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("samurai", "侍"); map.put("engineer", "エンジニア"); for(String val : map.values()){ System.out.println(val); } } }
実行結果:
侍 エンジニア
キーと値のペア(Entry)を全て取得する方法
Mapのキーと値のペアはMap.Entryインタフェースで表されます。Map.EntryはgetKeyメソッドでキーを、getValueメソッドで値を取得することができます。MapのEntryを全て取得するには、entrySetメソッドを使用します。
entrySetメソッドはMapのEntryをSet型で返すので、拡張for文を使って以下のように繰り返して取得することができます。
サンプルプログラム:
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("samurai", "侍"); map.put("engineer", "エンジニア"); for(Map.Entry<String, String> entry : map.entrySet()){ System.out.println(entry.getKey() + ":" + entry.getValue()); } } }
実行結果:
samurai:侍 engineer:エンジニア
Mapのキーや値を繰り返して取得する方法は、以下の記事でも詳しく解説しています!
Listに変換して要素番号で値を取得する方法
ここではMapの応用的な使い方として、要素番号で値を取得する方法を説明します。Mapは説明したように、指定したキーに紐づく値を取得する方法が一般的です。
しかし、Mapを同じコレクションのListに変換すれば、要素番号を指定して値を取得することが可能となります。MapをListに変換するには、valuesメソッドを使用して以下のとおり記述します。
書き方:
List<値のデータ型> オブジェクト名 = new ArrayList<値のデータ型>(Map型のオブジェクト名.values());
valuesメソッドはMapに格納された全ての値を返します。Mapに格納した値をListに変換して、要素番号で値を取得する方法を以下に記述します。
サンプルプログラム:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { // Mapの宣言 Map<String, String> map = new HashMap<>(); // MAPにデータを格納 map.put("key1", "apple"); map.put("key2", "orange"); map.put("key3", "melon"); // Listを宣言し、valuesメソッドを使用してMapの値を取得する List<String> list = new ArrayList<>(map.values()); // 要素番号を指定してListの値を取得する System.out.println(list.get(0)); System.out.println(list.get(1)); System.out.println(list.get(2)); } }
実行結果:
orange apple melon
紹介したサンプルでは、先ほどと同じくMap型の変数mapを宣言し、格納するキーと値をString型で指定しています。putメソッドを使用して、キー名称とそれに紐づくデータを格納しています。
次に、ArrayListクラスのList型の変数listを宣言し、valuesメソッドを使用してMapをListに変換しています。Listのgetメソッドで要素数を指定し、値を取得することが可能になります。
要素の追加などMap(連想配列)について
要素の追加やソートなどMap(連想配列)の使い方については、以下の記事にまとめていますのでぜひ参考にしてくださいね!
まとめ
いかがでしたか?Mapのキーや値を取得する方法や、MapをListに変換して要素番号を指定して値を取得できることがわかりました。応用的な使い方をすれば、ListやMapは更に便利になります。
もしMapから値を取得する方法を忘れてしまったら、この記事を思い出してくださいね!