Javaを使う上で、ListやMapなどのコレクションを扱う処理は、必須と言えます。
しかし、MapはListに比べて値の追加方法が、少し異なります。この記事では、Mapに値を追加する方法について、以下の内容で解説していきます。
- 【基礎】Mapとは
- 【基礎】Mapに値を追加するには?
- 【基礎】putメソッドの基本的な使い方
- 【基礎】Listや配列に値を追加するには?
- 【発展】Mapに値をまとめて追加するには?
- 【発展】putAllメソッドの使い方
- 【発展】Mapの値を取得するには?
ここでは、そんなMapに値を追加する方法について、詳しく解説していきます!
なお、Javaの記事については、こちらにまとめています。
Mapとは
java.util.Mapインタフェースは、キーに対してキーに紐づく値を保持することができるコレクションの1つです。コレクションとは、後からサイズを変更できる動的配列と理解していただければ大丈夫です。
Mapインタフェースでは、主にjava.util.HashMapやjava.util.TreeMapを使用します。Mapは以下のようにオブジェクトを生成します。
//HashMapクラスのオブジェクトを生成 Map map = new HashMap(); //型引数を指定してHashMapクラスのオブジェクトを生成 Map<データ型, データ型> マップ変数 = new HashMap<データ型, データ型>();
以下はMapを生成する具体例となります。
格納する値にはIntegerやString、ListやMapなどを指定することができます。
//String型を指定する Map<String, String> map = new HashMap<String, String>(); //Listを指定する Map<String, List<String>> map = new HashMap<>();
Mapに値を追加する
ここでは、実際に「Mapに値を追加する方法」について見ていきましょう!
値を追加するputメソッドとは
Mapに値を追加するには、HashMapクラスで用意されているputメソッドを使用します。putメソッドは第一引数にキーを指定し、第二引数にキーに関連付けられる値を指定します。
Mapにすでにキーに対するマッピングがある場合は、古い値は指定された値に置き換えられます。
Map<String, String> map = new HashMap<String, String>(); map.put(キー名, 値);
戻り値:
putメソッドは戻り値にキーに関連した値を返します。
キーのマッピングが無かった場合はnullを返します。
値を追加する基本的な方法
Mapで値を追加するためには、上述したようにキーを指定し、キーに紐付いた値を追加する必要があります。Mapにキーと値を指定して、値を追加する方法を、以下に記述します。
import java.util.*; public class Main { public static void main(String[] args) throws Exception { // Mapの宣言 Map<String, String> map1 = new HashMap<String, String>(); // MAPにデータを格納 map1.put("key1", "apple"); map1.put("key2", "orange"); map1.put("key3", "melon"); System.out.println(map1.get("key1")); System.out.println(map1.get("key2")); System.out.println(map1.get("key3")); } }
実行結果 apple orange melon
紹介したサンプルでは、HashMapクラスでMapインタフェースの変数mMapを宣言し、キーのデータ型、値のデータ型にそれぞれ、String型を設定しています。値の追加は、Mapの変数mMapにputメソッドを使用して、String型のキー名称と値を、それぞれ設定しています。
List・配列に値を追加する方法
ListもMapと同じく大きさが決まっていない動的配列になります。Mapがキーと紐づく値を追加するのに対して、Listは配列と同じく要素を順番に追加することができます。
また、挿入位置を指定して値を追加することも可能です。Listに値を追加する方法に関しては、以下の記事で詳しく解説しています!
配列はListやMapに比べて手続きが少なく、宣言時に指定した要素分の値を設定できるため、シンプルで扱いやすいと言えます。
しかし、配列はMapやListのような動的配列ではなく固定長のため、基本的に値を追加する方法はありません。その代わり、追加したい分を別の大きな配列を用意して、値をコピーして使うという方法があります。
配列に値を追加する方法について知りたい方は、以下の記事を参照してください!
値をまとめて追加する方法
Mapインタフェースで使用するHashMapクラスには、putAllというメソッドが用意されています。putAllメソッドは、指定したMapの全ての値を追加することが可能です。
putAllメソッドを指定してMapの値を追加する方法を、以下に記述します。
import java.util.*; public class Main { public static void main(String[] args) throws Exception { // Mapの宣言 Map<String, String> map1 = new HashMap<String, String>(); Map<String, String> map2 = new HashMap<String, String>(); // MAPにデータを格納 map1.put("key1", "apple"); map1.put("key2", "orange"); map1.put("key3", "melon"); //putAllメソッドを使用してmMap1のデータをmMap2に追加 map2.putAll(map1); System.out.println(map2.get("key1")); System.out.println(map2.get("key2")); System.out.println(map2.get("key3")); } }
実行結果 apple orange melon
紹介したサンプルでは、Mapインタフェースの変数mMap1、mMap2を宣言し、mMap1にputメソッドを使用して値を追加しています。
次に、mMap2に対してputAllメソッドを使用して、mMap1を指定しています。以下のようにputAllメソッドを使用することで、mMap1の値が全てmMap2に追加されます。
mMap2.putAll(mMap1);
Mapの種類によって方法が変わる?
Mapには「HashMap」「TreeMap」「LinkedHashMap」などの種類があります。
基本的に目的は同じで、キーを指定して値を追加することに変わりませんが、値を追加した後の動作が変わることがあります。例えばキー名称を”key3”、”key2”、”key1”の順にMapに追加したときに、それぞれのMapがどのように値を保持しているか、以下に説明します。
HashMap
HashMapは、値はバラバラで追加されます。そのため、”key3”、”key2”、”key1”の順に追加したとしても、順不同で保持されます。
TreeMap
TreeMapは、値を追加後にキーを昇順でソートします。そのため、Map内部では”key1”、”key2”、”key3”の順に保持されます。
LinkedHashMap
LinkedHashMapは、値が追加された順番を保持します。Map内部では”key3”、”key2”、”key1”の順に保持されます。
値を取得する方法
値を追加したら、今度は取得する方法について知っておきましょう。
Mapで値を取得するにはgetメソッドを使用します。getメソッドは引数に取得する値に関連するキーを指定します。
Map<String, String> map = new HashMap<String, String>(); mMap.get(キー名));
以下にgetメソッドを使用して、値を取得する方法を記述します。
import java.util.*; public class Main { public static void main(String[] args) throws Exception { // Mapの宣言 Map<String, String> map = new HashMap<String, String>(); // Mapにキーと値を格納 map.put("key1", "apple"); map.put("key2", "orange"); map.put("key3", "melon"); // Mapからデータを取得する System.out.println( map.get("key1")); System.out.println( map.get("key2")); System.out.println( map.get("key3")); } }
実行結果 apple orange melon
このようにgetメソッドでMapのキーを指定すれば、Mapの値を簡単に取得できます。JavaのMapで値を取得する方法については、以下の記事でも詳しく解説しています!
Mapについてもっと詳しく知りたい方へ
配列と比べてMapなどのコレクションの処理はとっつきにくいイメージがありますよね……。
しかし、以下のMapの処理をまとめた記事を読めば、きっとMapをより深く理解できるようになるでしょう。JavaのMapは使いこなせるようになれば、さまざまな複雑な処理が簡単にできるようになります!
Javaプログラマーとして一歩先へステップアップしたいなら、ぜひ以下の記事も参考にしてくださいね!
まとめ
Mapの値をputメソッドを使用して追加する方法や、値をまとめて追加する方法、Mapの種類について説明しました。
実際にMapなどのコレクションはよく使用されますので、使い方はしっかりと覚えておきましょう。もし、Mapから値を追加する方法を忘れてしまったら、この記事を思い出してくださいね!