Knowledge Log

【Java】配列はもう卒業?「List(リスト)」を使ってデータを自由自在に操ろう!

denson
1

はじめに

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

前回の記事でRPGの戦闘システムを設計した際、しれっとこんなコードを書いたのを覚えていますか?

List<Character> party = new ArrayList<>();

これ、実はJavaを扱う上で、配列(Array)よりも圧倒的に出番が多い「List(リスト)」という超便利な道具なんです。

プログラミングを始めたばかりの頃、データをまとめて扱うには「配列」を習いますよね。

でも、実際にアプリやゲームを作ってみると、こんな壁にぶつかりませんか?

  • 「最初に『5人分』って決めたら、後から仲間が増やせない!」
  • 「途中のデータを消したら、後ろのデータを詰めなきゃいけないの……?」

そんな「配列のちょっと不便なところ」をすべて解決してくれるのが、今回ご紹介する List です。

データの増減を自由自在に操れるようになると、あなたのプログラムは一気に「実用的なシステム」へと進化します。

今回も、一歩ずつ一緒に学んでいきましょう!

この記事はこんな人におすすめ!
  • 「配列」のサイズ制限にイライラしたことがある人
  • 前回の記事に出てきた ArrayList の正体を知りたい人
  • 大量のデータを賢く、楽に管理したいと思っている人
2

配列と List の決定的な違い

「データをまとめて扱う」という点では、配列(Array)も List も同じです。

でも、その「柔軟性」がまったく違います。

イメージしやすいように、乗り物に例えてみましょう。

  • 配列(Array)は「定員制のバス」 出発前に「5人乗り!」と決めたら、後から6人目が来ても乗せられません。無理やり乗せるには、新しいバスを買い直して全員引っ越すしかありません。
  • List は「連結自在の列車」 乗客が増えたら、後ろに車両を「ポチッ」と連結するだけ。逆に減ったら切り離すのも自由。最初から正確な人数を決めておかなくても大丈夫なんです。

ここが List の「神」ポイント!

  1. サイズが自動で伸び縮みする: new したあとに「やっぱり100個に増やしたい」と思っても、List なら勝手にやってくれます。
  2. 途中の抜き差しが得意: 「2番目のデータを消して、後ろを全部前に詰める」なんていう面倒な処理も、メソッド一つで完了します。
  3. 「いま何人?」がすぐわかる: 配列だと「中身が入っている場所」を自分で数える必要がありますが、List は常に自分のサイズを知っています。

実務の世界では、あらかじめデータの数がきっちり決まっていることなんて滅多にありません。だからこそ、この「あとからどうにでもなる」List が主役になるんです。

3

よく使う!ArrayList の基本操作

List(正確には、一番よく使われる ArrayList)を使うために、まずはこの3つの操作を覚えましょう。これだけで、データの管理が劇的に楽になります。

① データを追加する: add()

「仲間が増えた!」というときは、これを使うだけ。自動的に一番後ろに連結されます。

List<String> party = new ArrayList<>();
party.add("おげん"); // 1人目
party.add("アリス"); // 2人目
party.add("ボブ");   // 3人目(自動でサイズが増える!)

② データを取り出す: get()

「2番目の仲間、だれだっけ?」というときに使います。

※プログラミングの世界では、数え方は 0番目 から始まるので注意です!

String secondMember = party.get(1); // "アリス" が取り出せる

③ 今いくつ入っているか数える: size()

「今、パーティーは何人編成?」と聞くときに便利です。

int count = party.size(); // 3 が返ってくる

配列との「書き方」の違い

配列だと party[1] と書いていたところが、Listだと party.get(1) になります。

「メソッド(命令)」を使ってやり取りするのが、オブジェクト指向らしいスマートな書き方ですね。

4

拡張for文との組み合わせ

Listにデータを入れたら、次はそれらを「全部一気に使いたい」ですよね。

そんな時に最強の相棒となるのが、「拡張for文」です。

「1つずつ順番に」を自動でやってくれる

これまでの普通のfor文だと、「0番目から数えて、サイズより小さい間、1ずつ増やして……」と、書くのが少し面倒でした。

拡張for文を使えば、そんな細かい指定は一切不要です!

List<String> party = new ArrayList<>();
party.add("おげん");
party.add("アリス");
party.add("ボブ");

// party(List)の中から、1つずつ取り出して「name」に入れてね!
for (String name : party) {
    System.out.println(name + "が仲間になった!");
}

ここがListの便利なところ!

前回のRPGのコードを思い出してみてください。

for (Character c : party) {
    c.attack();
}

このとき、party の中に戦士が1人だろうが、魔法使いが100人だろうが、この2行だけで全員に命令が出せます。

  • 「いま何人いるか」を自動で判別してくれる
  • 「最後の1人」が終わったら勝手に止まってくれる

Listと拡張for文を組み合わせれば、データがどれだけ増えても、あなたのコードはずっとスッキリしたままなんです。

5

まとめ:配列とList、どっちを使う?

今回は、Javaでデータを扱う最強の味方「List(ArrayList)」について学びました。

最後に、「配列」と「List」の使い分けをスッキリ整理しておきましょう。

「基本はList」でOK!

現代のJava開発において、データの管理に配列を使うシーンはかなり限られています。

実務でも、「とりあえずListに入れておく」のが一番修正に強く、安全な選択であることがほとんどです。

前回の「オブジェクト指向」がプログラムのを作るための知識だとしたら、今回の「List」は、その中で動くデータを操るための知識です。

この2つが揃えば、もうあなたは「自分の思い通りのデータを、思い通りの仕組みで動かす」ことができるエンジニアの第一歩を踏み出しています。

ぜひ、前回のRPGコードを改造して、新しい仲間をどんどん add() して動かしてみてくださいね!

今回も最後まで読んでいただき、ありがとうございました!

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