0

Java 支持多维数组,表示为“数组的数组”。例如,我可以使用以下代码创建一个字符串数组:

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

我想做的是让第二个维度被“取消”。换句话说,像这样的 for 循环for(String[] array : array2d) System.err.println(array);会打印出:

null
...
null

我想这样做的原因是因为我已经分配了一堆String[]我想放入的实例array2d。我有几个解决方案,但由于以下原因,两者似乎都不是最佳的:

解决方案 1

我可以做类似的事情String[][] array2d = new String[rows][0],使用 for 循环来清空第一个维度,然后填充行,但这对我来说似乎很难看,因为 Java 将为String[]每一行创建一个新的空,我真的不需要它到。

解决方案 2

我也可以做类似的事情String[][] array2d = new String[][]{null, null, ... null},但这更糟糕,因为我必须array2d通过括号中的代码部分对第一个维度的长度进行硬编码,这很恶心。

我认识到这不是一个大问题,尤其是当维数很小的时候,任何称职的程序员都会选择其他构造而不是创建多维数组。我只是好奇是否有办法在构造时部分分配多维数组的维度。

4

1 回答 1

5

最简单的解决方案:

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

如果您不初始化第二个维度,则您的数组将null在维度 1 中包含条目。

于 2013-01-30T22:59:12.333 回答