【Java】Listの中にMapを代入する方法
JavaでListの中にMapを代入するには、Listの型をMapにすること(例:List<List<String>>※型をString型のListに指定)することでaddメソッドなど使用し、代入することができます。
// Listの型をString型,String型のMapに指定
List<Map<String,String>>ListMap = new ArrayList<Map<String,String>>();
// 型をString型,String型
Map<String,String>Map = new HashMap<String,String>();
for(int i = 0; i < 3; i++){
Integer j = Integer.valueOf(i);
String str = j.toString();
Map.clear();
Map.put(str,str+1);
System.out.println(Map);
// Listの中にMapを代入する※参照渡ししないためnewで代入
ListMap.add(new HashMap<String,String>(Map));
}
// Listの中を確認
System.out.println(ListMap);
// 実行結果
{0=01}
{1=11}
{2=21}
[{0=01}, {1=11}, {2=21}]
Listの中にMapを追加するときは、参照渡ししていないか注意が必要
”参照渡し”をArrayListに代入していることから、最後に代入されたオブジェクトのみの表示しかされないケースがあります。
例えば、以下のプログラムは参照渡しされ、想定と違うListの中身となりました。
ListにMapを追加する際は下記のサンプルプログラムにならないようにnewを使用する必要があります。
// Listの型をString型,String型のMapに指定
List<Map<String,String>>ListMap = new ArrayList<Map<String,String>>();
// 型をString型,String型
Map<String,String>Map = new HashMap<String,String>();
for(int i = 0; i < 3; i++){
Integer j = Integer.valueOf(i);
String str = j.toString();
Map.clear();
Map.put(str,str+1);
System.out.println(Map);
//参照渡し
ListMap.add(Map);
}
// Listの中を確認
System.out.println(ListMap);
// 実行結果
{0=01}
{1=11}
{2=21}
[{2=21}, {2=21}, {2=21}]





コメントを残す