【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]]
コメントを残す