プログラミング

Javaの二次元配列完全ガイド

Javaにおける二次元配列 (Two-dimensional Arrays) 完全ガイド

Javaでは、二次元配列は配列の配列として実装され、データを行と列の形式で格納するのに使用されます。この構造は、特に行列計算やグリッド状のデータを扱う際に有用です。この記事では、Javaにおける二次元配列の基本的な使い方から、応用的な技術に至るまで詳細に解説します。

1. 二次元配列の定義

Javaで二次元配列を定義するには、まず配列をどのように格納するかを決める必要があります。二次元配列は、基本的に「配列の配列」です。以下のコードでは、整数型の二次元配列を作成しています。

java
int[][] array = new int[3][4];

このコードでは、3行4列の整数型二次元配列を宣言しています。arrayは3つの行を持ち、それぞれの行には4つの列があります。ここで、配列内の各要素にはデフォルト値として0が自動的に設定されます。

2. 配列の初期化

二次元配列は、宣言時に初期化することもできます。例えば、以下のように初期化を行うことができます。

java
int[][] array = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };

このコードでは、3行4列の配列に値を代入しています。それぞれの行に異なる値を設定することで、2D配列内の個々の要素にアクセスできます。

3. 二次元配列の要素にアクセスする方法

二次元配列の要素にアクセスするには、行番号と列番号を指定します。以下の例では、array[1][2]というコードを使用して、2行目(インデックスは0から始まるため、実際には2行目)の3列目の要素にアクセスしています。

java
int value = array[1][2]; // 7を取得

この場合、array[1][2]の値は7となります。

4. 二次元配列の反復処理

二次元配列の各要素にアクセスするためには、forループを使用します。次のコードは、二次元配列の全ての要素を出力する方法を示しています。

java
for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j] + " "); } System.out.println(); }

このコードでは、外側のループが行を、内側のループが列を担当し、各要素を一つずつ出力します。array.lengthは行数を返し、array[i].lengthはi番目の行の列数を返します。

5. 可変長の二次元配列

Javaでは、各行の列数が異なる「ジャグ配列(Jagged Array)」を作成することができます。これは、各行が異なる長さの配列を持つ二次元配列です。例えば、以下のように定義します。

java
int[][] jaggedArray = new int[3][]; jaggedArray[0] = new int[2]; // 1行目は2列 jaggedArray[1] = new int[3]; // 2行目は3列 jaggedArray[2] = new int[4]; // 3行目は4列

このように、行ごとに列数を自由に設定することができます。

6. 配列のコピー

Javaで配列をコピーするには、System.arraycopy()Arrays.copyOf()を使用する方法があります。例えば、以下のコードでは、array1の内容をarray2にコピーしています。

java
int[][] array1 = { {1, 2, 3}, {4, 5, 6} }; int[][] array2 = new int[2][3]; System.arraycopy(array1, 0, array2, 0, array1.length);

このコードは、array1の内容をarray2にコピーしています。ただし、System.arraycopy()では、要素のコピーだけが行われるため、二次元配列内の個別のオブジェクト配列を深くコピーする場合は、手動でのコピー処理が必要です。

7. 配列のサイズ変更

Javaでは、配列のサイズを直接変更することはできません。もし配列のサイズを変更したい場合は、新しい配列を作成して既存の要素を新しい配列にコピーする必要があります。例えば、以下のように新しい配列を作成して、既存のデータをコピーする方法があります。

java
int[][] newArray = new int[4][4]; for (int i = 0; i < array.length; i++) { System.arraycopy(array[i], 0, newArray[i], 0, array[i].length); }

このコードでは、arrayの内容をnewArrayにコピーしていますが、newArrayのサイズが大きいため、コピーされる要素が全てではなく、新しい配列の初期化後に追加要素を設定できます。

8. 二次元配列の応用

二次元配列は、数値計算やマトリックス演算など、さまざまな応用に使用されます。例えば、行列の加算を行う場合、各要素にアクセスして加算することができます。

java
int[][] matrix1 = { {1, 2}, {3, 4} }; int[][] matrix2 = { {5, 6}, {7, 8} }; int[][] result = new int[2][2]; for (int i = 0; i < matrix1.length; i++) { for (int j = 0; j < matrix1[i].length; j++) { result[i][j] = matrix1[i][j] + matrix2[i][j]; } }

この例では、matrix1matrix2という2つの行列を加算し、その結果をresultに格納しています。

結論

Javaにおける二次元配列は、複雑なデータ構造を管理するために非常に有用です。基本的な使い方から応用的な技術まで理解し、適切に使用することで、さまざまな問題を効率よく解決することができます。これらの技術をマスターすることで、プログラミングのスキルを向上させることができます。

Back to top button