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
通过括号中的代码部分对第一个维度的长度进行硬编码,这很恶心。
我认识到这不是一个大问题,尤其是当维数很小的时候,任何称职的程序员都会选择其他构造而不是创建多维数组。我只是好奇是否有办法在构造时部分分配多维数组的维度。