Java支持多维数组,表示为“数组数组”。例如,我可以使用以下代码创建一个String数组数组:
int rows = ...
int cols = ...
String[][] array2d = new String[rows][cols];
我想做的是让第二个维度“消失”。换句话说,像for(String[] array : array2d) System.err.println(array);
这样的for循环会打印出来:
null
...
null
我之所以这样做,是因为我已经分配了一堆String[]
个实例,我想放入array2d
。我有几个解决方案,但由于以下原因,两者似乎都不是最佳的:
解决方案1
我可以像String[][] array2d = new String[rows][0]
这样做,使用for循环来取消第一个维度,然后再填充行,但这对我来说似乎很难看,因为Java会创建一个新的空{{1}对于每一行,我真的不需要它。
解决方案2
我也可以执行String[]
之类的操作,但这更糟糕,因为我必须通过代码括号中的代码部分对String[][] array2d = new String[][]{null, null, ... null}
的第一维的长度进行硬编码,这很令人作呕。< / p>
我认识到这不是一个大问题,特别是当维度很小时,任何值得他的盐的程序员都会选择其他构造来创建多维度的数组。如果有一种方法可以在构造中部分分配多维数组的维度,我大多只是好奇。
答案 0 :(得分:5)
最简单的解决方案:
int rows = ...
String[][] array2d = new String[rows][];
如果您没有初始化第二个维度,则数组将在维度1中包含null
个条目。