Java supports multi-dimensional arrays, which are represented as “arrays of arrays”. For instance, I can create an array of String arrays using the following code:
int rows = ...
int cols = ...
String[][] array2d = new String[rows][cols];
What I’d like to do is have the second dimension be “nulled out”. In other words, a for-loop like for(String[] array : array2d) System.err.println(array); would print out:
null
...
null
The reason I’d like to do this is because I have already allocated a bunch of String[] instances that I want to just drop into array2d. I have a couple of solutions but both seem sub-optimal for the following reasons:
Solution 1
I could just do something like String[][] array2d = new String[rows][0], use a for-loop to null out the first dimension, and populate the rows later, but this seems ugly to me because Java will create a new empty String[] for every row, and I really don’t need it to.
Solution 2
I could also do something like String[][] array2d = new String[][]{null, null, ... null}, but this is even worse because I have to hard code the length of the first dimension of array2d via the bracketed section of code, which is disgusting.
I recognize that this isn’t a huge problem, especially when the dimensionality is small, and any programmer worth his salt would choose some other construct over creating arrays of many dimensions. I’m mostly just curious if there is a way to partially allocate dimensions of a multi-dimensional array at construction.
Easiest solution possible:
If you don’t initialize the second dimension, you array will have
nullentries in dimension 1.