List, Mapどちらも利便性が高く
よく開発の現場で目にします。
その中でList内にMap方を格納する方法について解説します。
考え方
Listは宣言時にジェネリクスに型を定義しますが、
その型をいれたいデータ構造を教えることで実現できます。
List<入れたい型> 変数 = new ArrayList<>();
Mapを入れたい場合だと以下となります。
List<Map<入れたい型, 入れたい型>> listMap = new ArrayList<>();
→ 例: List<Map<int, String>> listMap = new ArrayList<>();
List型の操作詳細は以下を御覧ください↓
サンプルコード
Listの<ジェネリクス>にMapを指定し初期化します。
その後、Listに格納用のMapを初期化しMapにデータを追加、MapをListに追加する流れです。
public class Main {
public static void main (String[] args) {
// Map型のリストを宣言します。
List<Map<String, String>> listMap = new ArrayList<>();
// Listに格納するMapを宣言
Map<String, String> map = new HashMap<>();
// Mapにデータを格納する
map.put("name", "Taro");
map.put("color", "yellow");
// ListにMapデータを格納。
listMap.add(map);
for (Map<String, String> map : listMap) {
System.out.println(
map.get("name") + "の好きな色は" + map.get("color")
);
}
}
}
実行結果
Taroの好きな色はyellow
ListにMap型の格納からデータの取得まで行えていることが確認できます。
両者とても便利でよく使用されるのでこのような使い方も同時に覚えておくとデータ管理をより行いやすくなりそうですね。
番外編 〜サンプルコード 〜MapにListを入れる〜
Mapの<ジェネリクス>にListを指定し初期化します。
その後、Mapに格納用のListを初期化しデータを追加、ListをMapに追加する流れです。
こちらも定義は以下のようになります。
Map<入れたい型, 入れたい型> 変数 = new HashMap<>();
MapにListを入れたい場合だと以下となります。
Map<入れたい型, List<入れたい型>> mapList = new HashMap<>();
→ 例: Map<String, List<String>> mapList = new HashMap<>();
実際の使用例が以下です。
public class Main {
public static void main (String[] args) {
// Mapの中にリストを宣言します。
Map<String, List<String>> mapLst = new HashMap<>();
// Listに格納するMapを宣言
List<String> list = new ArrayList<>();
// listにデータを格納する
list.add("black");
list.add("yellow");
// MapにListデータを格納。
mapLst.put("Taro", list);
}
}
まとめ
本文中で出てきたListとMapの詳細は以下でも解説しています。
少しだけ応用としてListにMap型を格納してデータを扱ってみました。実際にもよく使われているデータ構造なので覚えておくと扱いやすくなります。