Multidimensional Arrays
A multidimensional array is an array of arrays.
Multidimensional arrays are useful when you want to store data as a tabular form, like a table with rows and columns.
To create a two-dimensional array, add each array within its own set of curly braces:
Example
int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
myNumbers is now an array with two arrays as its elements.
Access Elements
To access the elements of the myNumbers array, specify two indexes: one for the array, and one for the element inside that array. This example accesses the third element [2] in the second array [1] of myNumbers:
Example
int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
System.out.println[myNumbers[1][2]]; // Outputs 7
Try it Yourself »
Remember that: Array indexes start with 0: [0] is the first element. [1] is the second element, etc.
Change Element Values
You can also change the value of an element:
Example
int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
myNumbers[1][2] = 9;
System.out.println[myNumbers[1][2]]; // Outputs 9 instead of 7
Try it Yourself »
Loop Through a Multi-Dimensional Array
We can also use a for loop
inside another for loop
to get the elements of a two-dimensional array [we still have to point to the two indexes]:
Example
public class Main {
public static void main[String[] args] {
int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
for [int i = 0; i < myNumbers.length; ++i] {
for[int j = 0; j < myNumbers[i].length; ++j] {
System.out.println[myNumbers[i][j]];
}
}
}
}
Try it Yourself »
Test Yourself With Exercises
Exercise:
Insert the missing part to create a two-dimensional array.
myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
Start the Exercise
Before we learn about the multidimensional array, make sure you know about Java array.
A multidimensional array is an array of arrays. Each element of a multidimensional array is an array itself. For example,
int[][] a = new int[3][4];
Here, we have created a multidimensional array named a. It is a 2-dimensional array, that can hold a maximum of 12 elements,
Remember, Java uses zero-based indexing, that is, indexing of arrays in Java starts with 0 and not 1.
Let's take another example of the multidimensional array. This time we will be creating a 3-dimensional array. For example,
String[][][] data = new String[3][4][2];
Here,
data is a 3d array that can hold a maximum of 24 [3*4*2] elements of type String
.
How to initialize a 2d array in Java?
Here is how we can initialize a 2-dimensional array in Java.
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};
As we can see, each element of the multidimensional array is an array itself. And also, unlike C/C++, each row of the multidimensional array in Java can be of different lengths.
Example: 2-dimensional Array
class MultidimensionalArray {
public static void main[String[] args] {
// create a 2d array
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};
// calculate the length of each row
System.out.println["Length of row 1: " + a[0].length];
System.out.println["Length of row 2: " + a[1].length];
System.out.println["Length of row 3: " + a[2].length];
}
}
Output:
Length of row 1: 3 Length of row 2: 4 Length of row 3: 1
In the above example, we are creating a multidimensional array named a. Since each component of a multidimensional array
is also an array [a[0]
, a[1]
and a[2]
are also arrays].
Here, we are using the length
attribute to calculate the length of each row.
Example: Print all elements of 2d array Using Loop
class MultidimensionalArray {
public static void main[String[] args] {
int[][] a = {
{1, -2, 3},
{-4, -5, 6, 9},
{7},
};
for [int i = 0; i < a.length; ++i] {
for[int j = 0; j < a[i].length; ++j] {
System.out.println[a[i][j]];
}
}
}
}
Output:
1 -2 3 -4 -5 6 9 7
We can also use the for...each loop to access elements of the multidimensional array. For example,
class MultidimensionalArray {
public static void main[String[] args] {
// create a 2d array
int[][] a = {
{1, -2, 3},
{-4, -5, 6, 9},
{7},
};
// first for...each loop access the individual array
// inside the 2d array
for [int[] innerArray: a] {
// second for...each loop access each element inside the row
for[int data: innerArray] {
System.out.println[data];
}
}
}
}
Output:
1 -2 3 -4 -5 6 9 7
In the above example, we are have created a 2d array named a. We then used for
loop and for...each
loop to access each element of the array.
How to initialize a 3d array in Java?
Let's see how we can use a 3d array in Java. We can initialize a 3d array similar to the 2d array. For example,
// test is a 3d array
int[][][] test = {
{
{1, -2, 3},
{2, 3, 4}
},
{
{-4, -5, 6, 9},
{1},
{2, 3}
}
};
Basically, a 3d array is an array of 2d arrays. The rows of a 3d array can also vary in length just like in a 2d array.
Example: 3-dimensional Array
class ThreeArray {
public static void main[String[] args] {
// create a 3d array
int[][][] test = {
{
{1, -2, 3},
{2, 3, 4}
},
{
{-4, -5, 6, 9},
{1},
{2, 3}
}
};
// for..each loop to iterate through elements of 3d array
for [int[][] array2D: test] {
for [int[] array1D: array2D] {
for[int item: array1D] {
System.out.println[item];
}
}
}
}
}
Output:
1 -2 3 2 3 4 -4 -5 6 9 1 2 3