配列の2次元が可変数の要素を持つJavaで2次元配列を作成する方法はありますか?
たとえば、要素が事前にわかっていれば、このように配列全体を一度に宣言できます。
int[][] runs = {{1, 4, 7}, {2, 3}, {1}};
ただし、値は事前にわかりません。次のようなことを行うために、配列を部分的に宣言したいと思います。
int[][] runs = new int[3]
;
次に、1 次元の各要素に整数の配列を入力します。しかし、エラーが発生します。
あなたの質問を正しく理解していれば、答えは非常に簡単です。
非対称多次元配列を作成しようとしています。
既知の第 1 レベルのサイズと未知の第 2 レベルのサイズで配列を初期化できます。
例えば:
int[][] runs = new int[3][];
それで...
runs[0] = new int[]{1,2,3};
runs[1] = new int[]{4};
runs[2] = new int[2]; // no elements defined, defaults to 0,0
System.out.println(Arrays.deepToString(runs));
出力:
[[1, 2, 3], [4], [0, 0]]
int[][] runs = new int[3][];
トリックを行います。
次に、各次元を初期化する必要があります。
runs[0] = new int[5];
runs[1] = new int[x];
//and so on
各次元の初期化は後でいつでも行うことができます。初期化の前に要素にアクセスしないようにしてください。NullPointerException