1

この記事の目次



1.  2次元配列


今まで習って来た配列は1次元配列と言います。1次元配列に縦の並びを加えると2次元配列になります。;違う言い方だと、2次元配列は配列の配列です。配列の各要素に配列を代入するのです。

 ●  宣言

* 各行の列数が同じ場合:

型名[][] 配列名 = new 型名[行数][列数];

* 各行の列数は同じ数値でなく、別々に宣言したい場合:

型名[][] 配列名 = new 型名[行数][];
配列名[0] = new 型名[行0の列数];
配列名[1] = new 型名[行1の列数];
・・・・ = ・・・・

 ●  宣言と同時に初期化する

型名[][] 配列名 = {{値11, 値12, ・・・}, {値22, 値22, ・・・}, ・・・};

上の初期化で。以下のような行列に表されます。

実行結果:
値11  値12  値13 ...
値21  値22  値23 ...
値31  値32  値33 ...
.
.
.
package helloworld;

import java.util.Arrays;

public class HelloWorld {
      
    public static void main(String[] args) {
        
        // 2次元の配列の宣言と初期化
        int[][] array = {{1,2,3},{4,5,6},{7,8,9}}; 
        //Arrays.deepToStringメソッドで配列を表示する。
        System.out.println(Arrays.deepToString(array));
        
    }
    
}

実行結果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

 ●  各要素にアクセスする

2次元の配列変数から値を取り出すためには、縦方向と横方向のふたつのインデックスで引き出します。

配列名[行番号][この行の列番号] = 値;

配列の各要素にアクセスして初期化する

package helloworld;

import java.util.Arrays;

public class HelloWorld {
      
    public static void main(String[] args) {
        
        // 2次元の配列の宣言
        int[][] array = new int[3][3]; 
        
        //配列の各要素にアクセスして初期化する
        for(int i = 0; i<3 ; i++){
            for (int j = 0; j<3 ; j++){
                array[i][j] = i*3 + j;
            }
        }
        
        System.out.println(Arrays.deepToString(array));
        
    }
    
}

実行結果:
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]

2.  多次元配列


3次元配列は2次元配列に次元がもうひとつ加わる配列。つまり縦と横に高さが加わるとイメージすればいいです。3次元以上の配列は多次元配列と言います。

 ●  宣言

型名[][]... 配列変数名 = new 型名[配列の要素数][配列の要素数]...;

 ●  宣言と同時に初期化する

例えば、3次元配列の場合:

型名[][][] 配列名 = {{{値11, 値12, ・・・}, {値22, 値22, ・・・},・・・}, ・・・};
package helloworld;

import java.util.Arrays;

public class HelloWorld {
      
    public static void main(String[] args) {
        
        // 3次元の配列の宣言と初期化
        int[][][] array = {{{1,2,3},{1,2,3}},{{1,2,3},{1,2,3}}}; 
        
        System.out.println(Arrays.deepToString(array));
        
    }
    
}

実行結果:
[[[1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3]]]

 ●  配列の各要素にアクセスする

配列名[配列番号][配列番号]...[要素番号] = 値;
package helloworld;

import java.util.Arrays;

public class HelloWorld {
      
    public static void main(String[] args) {
        
        // 2次元の配列の宣言
        int[][][] array = new int[2][3][2]; 
        int x = 0;//要素の値
        
        //配列の各要素にアクセスして初期化する
        for(int i = 0; i<2 ; i++){
            for (int j = 0; j<3 ; j++){
                for (int k = 0; k<2 ; k++){
                    array[i][j][k] = x; //array配列のi番目の行のj番目の列のk番目の要素にxを代入する
                    x++;
                }
            }
        }
        
        System.out.println(Arrays.deepToString(array));
        
    }
    
}

実行結果:
[[[0, 1], [2, 3], [4, 5]], [[6, 7], [8, 9], [10, 11]]]

3.  多次元配列の長さ


(n) 次元配列の長さ:配列名.length
(n - 1) 次元配列の長さ:配列名[インデックス番号].length
(n - 2) 次元配列の長さ:配列名[インデックス番号][インデックス番号].length
.
.
.
  • 2次元の場合:配列名.lengthは行数になり、配列名[0].lengthは列数になります。
  • 3次元の場合:配列名[0][0].lengthは高さとなります。
  • package helloworld;
    
    import java.util.Arrays;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            // 2次元の配列の宣言
            int[][][] array = new int[2][3][2]; 
            int x = 0;//要素の値
            
            //配列の各要素にアクセスして初期化する
            for(int i = 0; i<2 ; i++){
                for (int j = 0; j<3 ; j++){
                    for (int k = 0; k<2 ; k++){
                        array[i][j][k] = x; //array配列のi番目の行のj番目の列のk番目の要素にxを代入する
                        x++;
                    }
                }
            }
            
            System.out.println(Arrays.deepToString(array));
            System.out.println("1次元の長さ:" + array.length);
            System.out.println("2次元の長さ:" + array[0].length);
            System.out.println("3次元の長さ:" + array[0][0].length);
            
        }
        
    }
    

    実行結果:
    [[[0, 1], [2, 3], [4, 5]], [[6, 7], [8, 9], [10, 11]]]
    1次元の長さ:2
    2次元の長さ:3
    3次元の長さ:2

    4.  まとめ


    ここまではJAVAの多次元配列をだいたいお分かりになりましたでしょうか。多次元と言いながら、開発現場では多くても、2次元までしか使いません。それに、3次元を使うより、LISTを使った方は楽で、LISTの要素を扱うメソットも多く用意してあります。是非ArrayListを見ておいてください。

     JAVAのArrayListについて詳しく見たい方:

    JAVAのArrayList

    ../../../java/java-collection-arraylist.html

    この記事ではListを実装したクラスの一つであるArrayListを紹介します。ArrayListは大きさが可変という点でたくさんの応用があるので、開発現場でよく・・・

    5.  演習問題


    広告