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

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

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

Javaの記事一覧へ

 

PAGE TOP