では、配列と ArrayList を同じ例題で操作を比較して、違いを図解で整理してみます。
例題
「整数リストに数値を追加して合計を出す」
1. 配列でやる場合
public class ArrayExample {
public static void main(String[] args) {
int[] nums = new int[3];
nums[0] = 10;
nums[1] = 20;
nums[2] = 30;
// 新しい値を追加したい場合 → 新しい配列を作る必要がある
int[] newNums = new int[4];
for(int i = 0; i < nums.length; i++) {
newNums[i] = nums[i];
}
newNums[3] = 40; // 追加
// 合計計算
int sum = 0;
for(int n : newNums) sum += n;
System.out.println("合計: " + sum); // 100
}
}
Javaイメージ図 (配列)
元の配列 nums[3]: +----+----+----+
| 10 | 20 | 30 |
+----+----+----+
新しい配列 newNums[4]: +----+----+----+----+
| 10 | 20 | 30 | 40 |
+----+----+----+----+
- ポイント: 配列は固定長なので、追加したいときは「コピーして新しい配列」を作る必要がある
2. ArrayList でやる場合
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
// 追加は簡単
list.add(40);
// 合計計算
int sum = 0;
for(int n : list) sum += n;
System.out.println("合計: " + sum); // 100
}
}
Javaイメージ図 (ArrayList)
ArrayList list:
+----+----+----+----+
| 10 | 20 | 30 | 40 |
+----+----+----+----+
index: 0 1 2 3
- ポイント:
.add()だけで自由に追加可能 - 内部では必要に応じて配列を拡張しているが、ユーザーは気にしなくてOK
3. 比較まとめ図
操作 配列 (Array) ArrayList
--------- ----------------------------- -----------------------------
作成 int[] nums = new int[3]; ArrayList<Integer> list = new ArrayList<>();
追加 nums[3] = 40; (不可) list.add(40);
削除 不可(コピー必須) list.remove(1);
合計 for 文でループ for 文でループ or stream
サイズ変更 不可(新配列を作る) 可(自動拡張)
💡 初心者向けポイント
- 配列は「サイズ固定」「高速・省メモリ」
- ArrayList は「サイズ可変」「要素の追加・削除が簡単」
- 日常的には 動的に変わるデータは ArrayList、計算や固定データは 配列 が向く
