Knowledge Log

【Java】サイズ変更も自由自在!超便利な「ArrayList」の使い方

denson
1

はじめに

みなさんどうも、おげんです。

以前の記事で、たくさんのデータをまとめて管理できる「配列」について解説しました。

でも、配列を使っていると、必ずと言っていいほどこんな壁にぶち当たります。

「あ、後からもう一つデータを追加したいけど、もう箱がいっぱいだ……」

Javaの配列は、最初に「箱の数は10個!」と決めたら、後から増やすことも減らすこともできない、頑丈すぎる木箱のような存在です。

でも、私たちが普段作っているアプリでは「データがいくつになるか、やってみないとわからない」という場面の方が圧倒的に多いですよね。

そんな時に大活躍するのが、今回紹介する 「ArrayList(リスト)」 です。

これを使えば、データの数に合わせて箱が勝手に伸び縮みしてくれます。

「配列のちょっと不便なところ」を全部解決してくれる、エンジニアにとっては魔法のような道具を、一緒にマスターしていきましょう!

この記事はこんな人におすすめ!
  • 配列の「サイズ固定」に不便さを感じている人
  • データの追加や削除をもっと楽にやりたい人
  • ArrayListの基本を押さえたい人
2

配列 vs ArrayList(何が違うの?)

言葉で説明するよりも、イメージで比較すると一瞬でわかります。

  • 配列(Array): 頑丈な 「木箱」 です。最初に「5人分」と決めて作ったら、6人目は入りません。無理に入れようとすると、あの長すぎる名前のエラー(ArrayIndexOutOfBoundsException)を吐いてJavaが止まってしまいます。
  • ArrayList: 伸縮自在な 「ゴム袋」 です。1人入れば1人分のサイズに、100人入れば100人分のサイズに、Javaが裏側で勝手に調整してくれます。

「じゃあ、全部ArrayListでいいじゃん!」と思うかもしれません。

実際、現場の開発ではArrayListを使うことの方が圧倒的に多いです。

でも、配列の方が動作が少しだけ速かったり、メモリを節約できたりというメリットもあります。

とはいえ、まずは「自由自在に形を変えられるArrayList」を使いこなせるようになることが、脱・初心者への近道ですよ!

3

ArrayListの書き方と「ラッパークラス」

ArrayListを使うには、Javaに「これからリストを使いますよ!」と宣言し、専用の書き方に従う必要があります。

呪文のインポート

まず、プログラムの最初(classより上)にこの一行を書きます。

import java.util.ArrayList;

基本の書き方

配列とは少し書き方が違います。例えば、整数のリストを作るならこう書きます。

ArrayList<Integer> list = new ArrayList<>();

「あれ、int じゃないの?」と思った方、大正解です。ここが最大のポイントです。

なぜ「Integer」と書くのか?

ArrayListには、「小文字で始まる基本の型(int, doubleなど)は直接入れられない」というちょっとワガママなルールがあります。

そこで、int を包んで「クラス」という立派な形にした Integer(ラッパークラス) を使ってあげます。

  • int(おなじみの型) → Integer(リスト用の型)
  • double(小数) → Double
  • boolean(判定) → Boolean

「いちいち書き換えるの面倒だな…」と思うかもしれません。

しかし、Javaが勝手に変換してくれる(オートボクシング)ので、「リストの時は大文字から始まる名前で宣言するんだな」とだけ覚えておけばOKです!

4

基本の操作(追加・取得・削除)

ArrayListの操作は、専用の「命令(メソッド)」を呼ぶだけです。 配列と違って、Javaが裏側でいい感じに調整してくれるのが最大のメリットです。

① データの追加(add)

これが一番の感動ポイント。箱のサイズを気にせず、どんどん放り込めます。

list.add(100);
list.add(200);

これだけで、自動的に「0番目に100」「1番目に200」と箱が作られて格納されます。

② データの取得(get)

配列の list[0] の代わりに、get メソッドを使います。

int value = list.get(0); // 100が取り出せる

③ データの削除(remove)

配列では難しかった「中抜き」も一瞬です。

list.remove(0); // 0番目のデータを削除

ここが凄いのですが、0番目を消すと、後ろにいた1番目以降のデータが自動的に前へ詰められます。 私たちが手動でずらす必要はありません!

要素の数を知る(size)

配列では .length でしたが、ArrayListでは .size() メソッドを使います。

「今、ゴム袋の中にいくつ入ってる?」と聞くイメージですね。

ArrayListに溜まったデータを全部表示したいとき、size() メソッドが大活躍します。

5

ArrayListとfor文を組み合わせてみよう

演算子のところで学んだ i++ を使って、中身を一つずつ取り出してみましょう!

import java.util.ArrayList;

public class ListLoopSample {
    public static void main(String[] args) {
        // 整数のリストを作成
        ArrayList<Integer> scores = new ArrayList<>();
        
        // データを追加(add)
        scores.add(80);
        scores.add(95);
        scores.add(70);
        
        // size() を使って、リストの中身を全部表示する
        // scores.size() は、この場合「3」を返してくれます
        for (int i = 0; i < scores.size(); i++) {
            System.out.println(i + "番目のスコア:" + scores.get(i));
        }

        System.out.println("--- データを追加後 ---");

        // 後からデータを追加しても、size() が自動で更新されるので
        // for文を書き直す必要はありません!
        scores.add(100);

        for (int i = 0; i < scores.size(); i++) {
            System.out.println(i + "番目のスコア:" + scores.get(i));
        }
    }
}

なぜ size() なの?

配列の length(長さ)は、箱の数そのもの。 ArrayListの size()(サイズ)は、「今、実際に入っているデータの数」です。

後からデータを add すれば size() は増えるし、remove すれば減ります。

どんなに中身が伸び縮みしても、i < scores.size() と書いておけば、常にピッタリの回数だけループしてくれる。

これが ArrayList の凄さです!

6

まとめ:データの扱いをもっと自由に!

今回は、中身に合わせて形を変える魔法の袋「ArrayList」について解説しました。

  • ArrayListはサイズ変更が自由自在! 後から追加も削除も思いのまま。
  • 「ラッパークラス(Integerなど)」 を使うのがJavaのルール。
  • 操作はメソッドで行う。 add で追加、get で取得、remove で削除。
  • size() メソッド を使えば、データの数に関わらずループ処理ができる。

プログラミングをしていると、「何個のデータを扱うか決まっていない」ことの方が普通です。

そんな時、ArrayListを使いこなせれば、どんなに大量のデータが来ても怖くありません。

これまでは「Javaの文法」というパーツを一つずつ学んできましたが、次はいよいよ、これらを組み合わせて大きな仕組みを作る 「クラス」や「オブジェクト指向」 の世界が待っています。

少しずつ、でも確実にエンジニアの道具箱が充実してきましたね。 自分のプロジェクトで「ここは配列じゃなくてArrayListにしてみようかな?」と考えることが、成長の第一歩です!

今回も最後まで読んでいただき、ありがとうございました。 また次の一歩を、共に進めていきましょう。

ABOUT ME
おげん
おげん
駆け出しエンジニア
文系未経験からエンジニアになるために挑戦を開始したアラサー。転職活動を終え、2026年4月からIT企業で勤務予定。自分が学習で苦労した経験を『誰かのための道しるべ』として発信中。
記事URLをコピーしました