It would really be better to store it like this
Assuming mapWidth and mapHeight are defined variables
int[][] mapStuff = new int[mapHeight][mapHeight] { ... init stuff ... } ;
Because remember, mapStuff is actually an array in itself. What you need to understand is that an array is always an array. The concept of multidimensional arrays is just that, a concept... In fact, an array can store any item, be it primitives, (int, double, etc) or objects (classes)
For a multidimensional array the item in question being stored is simply another array. To rephrase, you are storing an array... of arrays.
That brings me back to why you would store the height (y position) then width (x position). I feel it's best to show it as an example
Let's take this for example
int[][] mapStuff = new int[3][2] {
new int[] { 0, 1 },
new int[] { 3, 1},
new int[] { 0, 3 }
}
It looks as a traditional coordinate system should... left to right is x, bottom to top is y. However, the array containing arrays is defined first To rephrase, mapStuff is an array of values containing x-coordinates. So, mapStuff[0] is an array of all x-coordinates when y is 0, and mapStuff[1] is an array of all x-coordinates when y is 1, and so on and so forth. So, to access an element, you would do mapStuff[y][x], rather than the traditional x and y.
I know it's a but weird to understand, so if you have any questions feel free to ask