多次元配列
配列の配列を作る
1次元配列をさらに配列として並べていく多次元配列というものがあります
つまり配列の配列です
作成方法は、基本的に1次元配列と同じです
ただし、宣言時に次元分の配列があるように括弧を複数指定する必要があります
たとえば以下は2次元配列の宣言です
type ary-name[ ] [ ];
1次元配列同様に、宣言した配列に対して領域を割り当てます
ary-name = new type[size1][size2];
これでsize1×size2の要素が割り当てられます
もちろん宣言と領域の割り当て作業は一行にまとめることができます
class test {
public static void main(String args[]) {
int ary[][] = new int[2][3];
ary[0][0] = 10;
ary[0][1] = 20;
ary[0][2] = 30;
ary[1][0] = 40;
ary[1][1] = 50;
ary[1][2] = 60;
System.out.println("配列0,xの和 = " + (ary[0][0] + ary[0][1] + ary[0][2]));
System.out.println("配列1,xの和 = " + (ary[1][0] + ary[1][1] + ary[1][2]));
}
}
見てわかるとおり、基本的な部分は1次元配列と同じですね
1次元配列の理解があれば、容易に理解できると思います
多次元配列の初期化も、1次元配列同様に行なえます
多次元の場合は { } の中にさらに { } をネストするように記述します
type ary-name = { {e00 , e01,...} , { e10 , e11 , ... } ...};
外側の { } が1次元目の配列で、内側の { } が2次元目の配列です
実際にプログラムを作って確認するとわかりやすいでしょう
class test {
public static void main(String args[]) {
int ary[][] = { {10,20} , {30,40} , {50 , 60} };
System.out.println(ary[0][0]);
System.out.println(ary[0][1]);
System.out.println(ary[1][0]);
System.out.println(ary[1][1]);
System.out.println(ary[2][0]);
System.out.println(ary[2][1]);
}
}
多次元配列の初期化は少しややこしいので、頭の中を整理して考えてください
ary[2][0]が50であることがわかれば大丈夫です
1次元配列では、配列の要素数を取得することができました
多次元配列でも同様に要素の数を取得することができますが、多少仕様が異なります
以下のプログラムを見てください
lass test {
public static void main(String args[]) {
int ary[][] = { {10,20} , {30,40} , {50 , 60} };
System.out.println("配列の要素数 = " + ary.length);
}
}
1次元配列では、これで問題はありませんでした
多次元配列でこのように記述すると、配列の第一次元の要素数を取得します
しかし、多次元には当然他の次元要素も存在します。それを参照するには添字を指定します
ary-name[index].length;
これで2次元の各要素の数を取得することができます
indexにはどの配列の要素を参照するかを指定します
class test {
public static void main(String args[]) {
int ary[][] = { {10} , {30,40} , {50 , 60 , 70 , 80} };
System.out.println("aryの要素数 = " + ary.length);
System.out.println("ary[0]の要素数 = " + ary[0].length);
System.out.println("ary[1]の要素数 = " + ary[1].length);
System.out.println("ary[2]の要素数 = " + ary[2].length);
}
}
実行結果は以下のようになります
aryの要素数 = 3
ary[0]の要素数 = 1
ary[1]の要素数 = 2
ary[2]の要素数 = 4
もちろん三次元になっても四次元になっても同じことです
class test {
public static void main(String args[]) {
int ary[][][] = {
{ {10} , {20,30} , {40,50,60} } ,
{ {70,80,90,100} }
};
System.out.println("1次元 = " + ary.length);
System.out.println("0要素2次元 = " + ary[0].length);
System.out.println("1要素2次元 = " + ary[1].length);
System.out.println("0,0要素3次元 = " + ary[0][0].length);
System.out.println("0,1要素3次元 = " + ary[0][1].length);
System.out.println("0,2要素3次元 = " + ary[0][2].length);
System.out.println("1,0要素3次元 = " + ary[1][0].length);
}
}
結果は次のようになります
1次元 = 2
0要素2次元 = 3
1要素2次元 = 1
0,0要素3次元 = 1
0,1要素3次元 = 2
0,2要素3次元 = 3
1,0要素3次元 = 4