Udemyの人気コースが今なら80%OFF!

【Java入門】Listの中にListを入れる簡単な方法(Listの入れ子構造)

【Java入門】Listの中にListを入れる簡単な方法

この記事では、Listの中にListを入れる簡単な方法について解説しています。
応用編は以下の記事になるのでぜひご参照ください。
【Java入門】Listの中にListを入れる(Listの入れ子構造) 【Java入門】Listの中にListを入れる(Listの入れ子構造)

基本的な書き方

Java

//リストの中にリストを入れる
List<List<String>> list = Arrays.asList(
        Arrays.asList("10","20"),
        Arrays.asList("30","40")
        );

//1個目のリストを取得。
System.out.println(list.get(0));

//2個目のリストを取得。
System.out.println(list.get(1));

//2個目のリストの2つ目の要素を取得。
System.out.println(list.get(1).get(1));

実行結果

[10, 20]
[30, 40]
40
解説
Arrays.asListをネストすることによって、Listの中にListを入れることが出来るようになります。
値を取得するときは、オブジェクト名.get(i)と記述することによってリストを取得することが出来ます。(8行目や11行目)
また、特定のリストの特定の要素を取得したい場合には、オブジェクト名.get(i).get(i)のように記述します。(14行目)

任意のオブジェクトをListの中にListとして入れる方法

次のオブジェクトをListの中にListとして入れる方法を考えます。

Person.ava

public class Person {

    String name;        //名前
    int age;            //年齢
    String birthplace;  //出身地

    //コンストラクタ
    public Person(String name, int age, String birthplace) {
        this.name = name;
        this.age = age;
        this.birthplace = birthplace;
    }

    //ゲッターセッター
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    public int getAge() {return age;}
    public void setAge(int age) {this.age = age;}
    public String getBirthplace() {return birthplace;}
    public void setBirthplace(String birthplace) {this.birthplace = birthplace;}

    @Override
    public String toString(){
        return name + "," + age + "," + birthplace;
    }
}

以下のコードがListの中にListを入れる例です。

Java

Person p1 = new Person("Trump", 72 , "USA");//ドナルド・トランプ大統領
Person p2 = new Person("Sinzo", 65 , "Japan");//安倍晋三首相
Person p3 = new Person("Yuriko", 68 , "Japan");//小池百合子都知事

Person p4 = new Person("Xi Jinping", 67 , "China");//習近平国家主席
Person p5 = new Person("Putin", 67 , "Russian");//プーチン大統領
Person p6 = new Person("Moon Jae-in", 68 , "Korea");//文在寅大統領

//リストの中にリストを入れる
List<List<Person>> list = Arrays.asList(
        Arrays.asList(p1,p2,p3),
        Arrays.asList(p4,p5,p6)
        );

//1個目のリストを取得。
System.out.println(list.get(0));

//2個目のリストを取得。
System.out.println(list.get(1));

//2個目のリストの2つ目の要素から名前を取得。
System.out.println(list.get(1).get(1).getName());

実行結果

[Trump,72,USA, Sinzo,65,Japan, Yuriko,68,Japan]
[Xi Jinping,67,China, Putin,67,Russian, Moon Jae-in,68,Korea]
Putin
解説
10行目でリストの中にリストを入れています。
1個目のリストにはp1,p2,p3を入れているので、16行目ではこれが出力されます。
同じく、2個目のリストにはp4,p5,p6を入れているので、19行目ではこれが出力されます。
22行目で取得している「2個目のリストの2つ目の要素の名前」はプーチン大統領のことを指すので「Putin」が返ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です