本サイトはプロモーション(広告)が含まれています。

【Java】Listの中にMapを代入する方法

【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}]

 

Javaの記事一覧へ

 

PAGE TOP