1. ギザギザの配列
Java プログラマーは、2 次元配列の行を交換できるだけでなく、必要に応じて配列を構築することもできます。
2 次元配列の最初の行の長さを10
、2 番目の行の長さを とするとします50
。それはできますか?はい、できます。
まず、「コンテナのコンテナ」を作成する必要があります。これは行の配列への参照を保存する最初の配列です。やり方は次のとおりです。
int[][] name = new int[height][];
2 番目の次元を省略するだけで、Java マシンはコンテナーのコンテナーを作成します。このコードを実行した後のメモリ内の内容は次のとおりです。

そして、まあ、あなたはすでに 1 次元配列の作成方法を知っています :
結果のコードは次のようになります。
|
2次元配列0行目は要素 の配列 1行目は要素 の配列 10 50 |
いわゆる「ギザギザ配列」を作成しました。
そして、この配列のすべての要素を画面上に表示したい場合は、配列のlength
プロパティが役に立ちます。結局のところ、配列の行の長さは異なります。
ところで、この例の「コンテナのコンテナ」の長さはどのようにして求められるのでしょうか? これは配列オブジェクトでもあり、長さがあることを意味します。正解は ですmatrix.length
。
行を構成する配列についてはどうでしょうか?matrix[0].length
2. 2 次元配列の操作
2 次元配列を表示するとします。どうやってそれを行うのですか?
コードは次のようになります。
|
配列を作成する 配列に値を入力します。 配列の行を反復する外側のループ。 単一行のセルを反復する内部ループ。 |
ネストされたループが 2 つ必要です。1 つ目はexternalと呼ばれ、2 つ目はinnerと呼ばれます。
外側のループ (i
変数) では、2 次元配列を構成するすべての行 (配列) を順番に調べます。の各値は、i
そのインデックスを持つ行に対応します。
内側のループ (j
変数) では、行内のすべてのセルを反復処理します。内部ループのおかげで、1 つの 1 次元配列の値で構成される行が画面に表示されます。
これが表示されます:
配列の 1 行が処理されます |
|
配列の 2 行が処理されます |
|
配列の 3 行が処理されます |
|
3. 多次元配列
配列に関するもう 1 つの興味深い事実は、おそらくすでに推測されているはずです。二次元配列が作れるなら三次元配列も作れるのでしょうか?
はい、任意の次元の配列を作成できます。このような配列は「多次元」と呼ばれます。
楽しみのために、4 次元の多次元配列を作成してみましょう。
int[][][][] matrix = new int[2][3][4][5];
このコードは単純すぎますね。
手動で作成したらどうなるでしょうか?
int[][][][] matrix;
matrix = new int[2][][][]; // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
matrix[i] = new int[3][][]; // Create a 3-element array of references to references
for (j = 0; j < matrix[i].length; j++)
{
matrix[i][j] = new int[4][]; // Create a 4-element array of references
for (k = 0; k < matrix[i][j].length; k++)
matrix[i][j][k] = new int[5]; // Create 5-element arrays of integers
}
}
それは単に配列を作成するだけです。それから、何らかの方法でそれを扱う必要もあります。
ボーナス タスク: 3 次元配列内のすべての値を表示するコードを作成します。
GO TO FULL VERSION