入門 ブラウザ 約15分

ArrayList で要素数を変えられるリストを使う

ArrayList の追加、取得、くり返し処理を通して、要素数を変えられるリストの基本を学ぶレッスン。

前回の配列は、最初に決めた要素数を後から変えられませんでした。「ユーザーが入力した名前を順番に追加していく」ような場面では、要素数が決まっていないほうが都合がよいです。ArrayList を使うと、必要に応じて要素を増やせます。

実行環境は引き続きブラウザ上のもの(paiza.IOOneCompiler)です。

配列は要素を追加できない

前回の配列を使って名前リストを作ると、最初に要素数を決める必要があります。

public class Main {
  public static void main(String[] args) {
    String[] names = {"田中", "佐藤", "鈴木"};
    System.out.println(names.length);
  }
}
3

ここに4人目を追加したくても、配列の要素数は 3 のまま変えられません。

ArrayList で書き直す

ArrayList を使うと、あとから add で要素を追加できます。

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<String> names = new ArrayList<>();
    names.add("田中");
    names.add("佐藤");
    names.add("鈴木");
    System.out.println(names);
  }
}
[田中, 佐藤, 鈴木]

いくつか見慣れない書き方が出てきました。

書き方意味
import java.util.ArrayList;ArrayList を使う準備(1行目に書く)
ArrayList<String>「String を入れる ArrayList」という型
new ArrayList<>()空の ArrayList を作る
names.add(...)末尾に要素を追加する

<String> の部分は「中に入れる型を指定する書き方」です。<Integer> にすれば int の値を入れる ArrayList になります。詳しい仕組みは後の回で扱います。

要素の取得とサイズ

配列の [インデックス].length に対応するのが、.get(インデックス).size() です。

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<String> names = new ArrayList<>();
    names.add("田中");
    names.add("佐藤");
    names.add("鈴木");

    System.out.println("先頭: " + names.get(0));
    System.out.println("2番目: " + names.get(1));
    System.out.println("人数: " + names.size());
  }
}
先頭: 田中
2番目: 佐藤
人数: 3
操作配列ArrayList
要素を取り出すnames[0]names[1]names.get(0)names.get(1)
要素数を得るnames.lengthnames.size()

インデックスが 0 始まりなのは配列と同じです。

for で全要素を処理する

配列と同じように、インデックスの for 文で回せます。

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<String> names = new ArrayList<>();
    names.add("田中");
    names.add("佐藤");
    names.add("鈴木");

    for (int i = 0; i < names.size(); i++) {
      System.out.println((i + 1) + "番: " + names.get(i));
    }
  }
}
1番: 田中
2番: 佐藤
3番: 鈴木

もう1つ、拡張 for 文(for-each)という書き方もあります。

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<String> names = new ArrayList<>();
    names.add("田中");
    names.add("佐藤");
    names.add("鈴木");

    for (String name : names) {
      System.out.println(name + "さん");
    }
  }
}
田中さん
佐藤さん
鈴木さん

for (String name : names) は「names の中身を1つずつ name に入れてくり返す」と読みます。インデックスが不要な場面ではこちらのほうが短く書けます。

配列と ArrayList の使い分け

配列ArrayList
要素数最初に固定あとから変えられる
書き方int[]ArrayList<Integer>
要素の取得scores[i]names.get(i)
要素数の取得.length.size()
主な場面要素数が決まっている要素数が変わる

実際の開発では ArrayList(やその仲間の List)を使うことのほうが多いです。配列は「中身の仕組みを理解するための土台」として押さえておけば十分です。

次の回へ

ここまでが「ブラウザ上で Java の基礎を読む」フェーズです。変数、計算、if、for、メソッド、配列、ArrayList と、小さなプログラムに必要な道具がそろいました。次の Part では、VS Code を使ったローカル環境に移り、ファイルを分けてコードを書く方法に進みます。