お疲れ様です。はるさらと申します。
Javaでプログラムを書くとき、
2次元配列に要素を追加したいと考えることがあります。
しかし、Javaの配列はサイズが固定されているため、
単純に「追加」という操作はできません。
そのため、経験の浅い方は「どうやって新しい行や列を増やせばいいのか」で
つまずくケースが多いです。
この記事では、Javaの2次元配列に要素を追加する方法をサンプルコード付きで解説します。
基本的な方法から実務で使える書き方、代替手法まで幅広く取り上げますので、
ぜひ参考にしてください。
Javaの配列はサイズ固定という前提を理解する
最初に押さえておくべきことは、
Javaの配列はサイズ固定という点です。
つまり、一度宣言した配列に直接「新しい行や列を追加」することはできません。
例えば次のコードはできません。
int[][] arr = new int[2][2];
// arr に新しい行を直接追加することは不可
そのため、2次元配列に要素を追加する場合は以下のような工夫が必要です。
- 新しい配列を作り直してコピーする
- ArrayListなどの可変長コレクションを使う
この違いを理解しておくと、状況に応じて最適な方法を選べます。
基本例:新しい配列を作ってコピーする方法
まずは、最もシンプルな「配列を拡張する方法」を紹介します。
新しい配列を作り、既存のデータをコピーし、新しい要素を追加する形です。
import java.util.Arrays;
public class ArrayAddExample {
public static void main(String[] args) {
int[][] arr = {
{1, 2},
{3, 4}
};
// 新しい行を追加
int[][] newArr = Arrays.copyOf(arr, arr.length + 1);
newArr[arr.length] = new int[]{5, 6};
// 確認出力
for (int[] row : newArr) {
System.out.println(Arrays.toString(row));
}
}
}
実行結果:
[1, 2]
[3, 4]
[5, 6]
この方法では、新しい配列を作ってから代入することで、
結果的に「追加」と同じ動作を実現しています。
実務利用例:設定データの動的追加
実務では、ユーザー入力や外部ファイルの読み込み結果を
2次元配列としてまとめたいケースがあります。
例えば、社員データをCSVから読み込み、1行ずつ追加していくイメージです。
import java.util.Arrays;
public class EmployeeAdd {
public static void main(String[] args) {
String[][] employees = {
{"001", "田中", "営業"},
{"002", "佐藤", "開発"}
};
// 新しい社員データを追加
String[][] updated = Arrays.copyOf(employees, employees.length + 1);
updated[employees.length] = new String[]{"003", "鈴木", "総務"};
// 出力確認
for (String[] emp : updated) {
System.out.println(Arrays.toString(emp));
}
}
}
実務では配列のコピー処理を関数化して使い回すと便利です。
ただし、データ数が多い場合には処理コストがかかるため注意が必要です。
代替手法:ArrayListを使って柔軟に追加する
「追加」処理を多用する場合は、ArrayListやList<List<>> を
使う方が実務では圧倒的に便利です。
ArrayListはサイズ可変なので、add()を使って簡単に行を増やせます。
import java.util.*;
public class ListAddExample {
public static void main(String[] args) {
List<List<String>> employees = new ArrayList<>();
employees.add(Arrays.asList("001", "田中", "営業"));
employees.add(Arrays.asList("002", "佐藤", "開発"));
// 新しい行を追加
employees.add(Arrays.asList("003", "鈴木", "総務"));
// 出力確認
for (List<String> emp : employees) {
System.out.println(emp);
}
}
}
ArrayListを使うと、配列コピーの手間がなく、
追加・削除・更新が直感的に扱えるのが強みです。
実務ではこちらの方法を使うことが多いでしょう。
注意点:経験の浅い方が間違えやすいポイント
2次元配列の追加処理でよくある間違いをまとめます。
- 配列に直接追加しようとする
Javaの配列は固定長のため、arr.add(...)のような操作はできません。
→ 新しい配列を作るか、ArrayListを使う必要があります。 - コピー時の行数・列数の扱いに注意
Arrays.copyOf()で新しい行を追加する際、
要素を正しく代入しないとnullが残るケースがあります。 - ArrayListと配列の違いを混同する
配列はarr[i][j]でアクセス、リストはlist.get(i).get(j)でアクセスします。
使い方を混同するとエラーにつながります。
関連記事
同じくJavaの配列や2次元配列の使い方を解説した記事もありますので、
合わせて参考にしてください。
- 【Java】2次元配列の初期化方法を徹底解説!初心者向けサンプル付きでわかりやすく解説
https://harusara22.work/java-two-dimensional-array/ - 【Java】2次元配列への代入方法まとめ|初心者向けサンプル付き解説
https://harusara22.work/java-two-dimensional-array-assignment/ - 【Java】2次元配列をソートする方法まとめ|初心者向けサンプル付き解説
https://harusara22.work/java-two-dimensional-array-sort/
まとめ
- Javaの配列はサイズ固定なので、直接追加はできない
- 新しい配列をコピーして追加する方法が基本
- 実務ではArrayListなど可変長コレクションを使う方が便利
- コピー処理やアクセス方法の違いに注意
経験の浅い方は、まずは「配列は固定長」という前提を理解し、
用途に応じて「コピー」か「ArrayList」を選べるようになると
ステップアップしていけます。
どなたかのお役に立てば幸いです。
それではまたー!





































