0

Java は、「配列の配列」として表される多次元配列をサポートしています。たとえば、次のコードを使用して String 配列の配列を作成できます。

int rows = ...
int cols = ...
String[][] array2d = new String[rows][cols];

私がやりたいのは、2番目の次元を「無効」にすることです。つまり、次のような for ループfor(String[] array : array2d) System.err.println(array);が出力されます。

null
...
null

私がこれをしたい理由は、私がString[]ただドロップしたいインスタンスの束をすでに割り当てているからですarray2d。いくつかの解決策がありますが、次の理由により、どちらも最適ではないようです。

解決策 1

のようなことをしてString[][] array2d = new String[rows][0]、for ループを使用して最初の次元を null にし、後で行にデータを入力することもできますが、JavaString[]は行ごとに新しい空を作成するため、これは私には醜いように思えますが、実際には必要ありません。に。

解決策 2

のようなこともできますが、コードの括弧で囲まれたセクションを介してString[][] array2d = new String[][]{null, null, ... null}の最初の次元の長さをハードコーディングする必要があるため、これはさらに悪いことです。array2d

特に次元が小さい場合、これは大きな問題ではないことを認識しており、彼の塩分に値するプログラマーは、多くの次元の配列を作成するよりも他の構造を選択します。構築時に多次元配列の次元を部分的に割り当てる方法があるかどうか、私はほとんど興味があります。

4

1 に答える 1

5

可能な最も簡単な解決策:

int rows = ...
String[][] array2d = new String[rows][];

2 番目の次元を初期化しない場合、配列のnullエントリは 1 次元になります。

于 2013-01-30T22:59:12.333 に答える