新人エンジニア向け!「ArrayListをフィールドに持つクラス」の基本と実践解説

こんにちは。ゆうせいです。

今回は「ArrayListをフィールドに持つクラス」について、初学者にもわかりやすく説明していきます!「フィールド」「ArrayList」と聞くとちょっと難しそうですが、例え話を使いながら丁寧に解説しますので安心してくださいね。


ArrayListとは?

まずは「ArrayListって何?」から始めましょう。

配列との違いから理解しよう

Javaでは「配列(Array)」と呼ばれる、データを並べて保持する構造があります。たとえば:

String[] names = new String[3];

これは「3人分の名前を入れる箱」を作っているイメージです。でも、人数が増えたらどうしますか?配列のサイズは固定なので、足りなくなると新しい配列を作るしかありません。

ここで登場するのがArrayListです。

ArrayList<String> names = new ArrayList<>();
names.add("田中");
names.add("佐藤");

ArrayListはサイズが可変の配列のようなもので、要素の追加や削除が自由にできる便利なクラスです。


フィールドにArrayListを持つってどういうこと?

フィールドとは?

フィールドとは、クラスの中に定義される「変数」のことです。そのクラスの状態(データ)を表します。

たとえば、「学生」を表すクラスに「テストの点数(複数)」を保持したいとき、以下のように書けます。

public class Student {
    private ArrayList<Integer> scores; // ← これがフィールド!
}

これは「Studentという設計図の中に、点数をしまっておけるリスト(ArrayList)があるよ」という意味です。


具体的なコード例

Studentクラスの例

import java.util.ArrayList;

public class Student {
    private String name;
    private ArrayList<Integer> scores;

    public Student(String name) {
        this.name = name;
        this.scores = new ArrayList<>();
    }

    public void addScore(int score) {
        scores.add(score);
    }

    public double getAverage() {
        int sum = 0;
        for (int score : scores) {
            sum += score;
        }
        return scores.size() == 0 ? 0 : (double) sum / scores.size();
    }

    public void printScores() {
        System.out.println(name + "の点数: " + scores);
    }
}

使い方例(mainメソッド)

public class Main {
    public static void main(String[] args) {
        Student s = new Student("山田");
        s.addScore(80);
        s.addScore(90);
        s.printScores(); // 山田の点数: [80, 90]
        System.out.println("平均点: " + s.getAverage()); // 平均点: 85.0
    }
}


メリットとデメリット

メリット

  • サイズを気にしなくてよい:必要な分だけ追加できる
  • 柔軟性が高い:並び替えや削除も簡単
  • リストとしての操作が充実:たとえばcontains(含まれているか)やremove(削除)など

デメリット

  • プリミティブ型(intなど)は直接使えない
     → intではなくIntegerというラッパークラスを使う必要があります。
  • パフォーマンス:大量データには向かない場合もある

よくある質問

Q. なぜArrayListはフィールドに向いているの?

A. データが増えたり減ったりする「柔軟な状態」を表現するのにピッタリだからです。たとえば、「買い物かご」に入れる商品一覧や「学生の出席記録」など、変動するデータに最適です。

Q. new ArrayList<>() の意味は?

A. 「新しく空のArrayListを作る」という意味です。
<>の中に型(例:StringInteger)を書くことで、何のデータを入れるかを指定できます。


まとめと今後の学習のヒント

ArrayListをフィールドに使うことで、複数のデータをクラスに自然に持たせることができるようになります。特に、現実世界に存在する「リストっぽい」データをプログラムで扱うときには欠かせません。

次のステップとしては、以下の内容に取り組むのがおすすめです。

  • ArrayListと他のコレクション(LinkedList, HashSetなど)の違い
  • フィールドをカプセル化(private + getter/setter)する意味
  • ArrayListの操作メソッド(sort, remove, clearなど)を実践で使ってみる

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。