では、配列と ArrayList で 連結操作 を同じ例題で比較して図解します。
例題
「クラスAとクラスBの出席リストをまとめる」
1. 配列でやる場合
public class ArrayConcatExample {
public static void main(String[] args) {
String[] classA = {"田中", "佐藤", "鈴木"};
String[] classB = {"高橋", "伊藤"};
// 連結するには新しい配列を作る必要がある
String[] allClasses = new String[classA.length + classB.length];
// classAをコピー
for(int i = 0; i < classA.length; i++) {
allClasses[i] = classA[i];
}
// classBをコピー
for(int i = 0; i < classB.length; i++) {
allClasses[classA.length + i] = classB[i];
}
// 出力
for(String name : allClasses) {
System.out.println(name);
}
}
}
Javaイメージ図(配列の連結)
classA: +----+----+----+ classB: +----+----+
|田中|佐藤|鈴木| |高橋|伊藤|
+----+----+----+ +----+----+
allClasses (新配列):
+----+----+----+----+----+
|田中|佐藤|鈴木|高橋|伊藤|
+----+----+----+----+----+
- 配列はサイズ固定なので、連結するには 新しい配列を作ってコピー する必要がある
2. ArrayList でやる場合
import java.util.ArrayList;
public class ArrayListConcatExample {
public static void main(String[] args) {
ArrayList<String> classA = new ArrayList<>();
classA.add("田中");
classA.add("佐藤");
classA.add("鈴木");
ArrayList<String> classB = new ArrayList<>();
classB.add("高橋");
classB.add("伊藤");
// 連結は addAll() で簡単
ArrayList<String> allClasses = new ArrayList<>();
allClasses.addAll(classA);
allClasses.addAll(classB);
// 出力
for(String name : allClasses) {
System.out.println(name);
}
}
}
Javaイメージ図(ArrayListの連結)
classA: +----+----+----+
|田中|佐藤|鈴木|
+----+----+----+
classB: +----+----+
|高橋|伊藤|
+----+----+
allClasses (ArrayList):
+----+----+----+----+----+
|田中|佐藤|鈴木|高橋|伊藤|
+----+----+----+----+----+
.addAll()だけで簡単にまとめられる- 元のリストはそのまま残る
3. 配列 vs ArrayList の連結比較
| 操作 | 配列 (Array) | ArrayList |
|---|---|---|
| 作成 | new String[size] | new ArrayList<>() |
| 連結 | 新しい配列を作ってコピー | .addAll() でまとめて追加 |
| サイズ変更 | 不可(コピー必須) | 可(自動拡張) |
| コード量 | 多い | 少ない |
| 可読性 | やや低い | 高い |
💡 初心者向けポイント
- 配列は「連結のたびに新しい配列を作る必要がある」
- ArrayList は「
addAll()で直感的にまとめられる」 - 実務ではデータの追加や結合が多い場合は ArrayList が便利
