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







コメントを残す