Keywords: multidimensional array, one-dimensional array, array
In this article, we will look at the multidimensional array in Java. A multidimensional array consists of two or more dimensions. We will, of course, see several different examples of how we can work with a multidimensional array in Java.
A multidimensional array consists of two or more dimensions. We previously considered the one-dimensional array as a list that contained several elements that could have values. In the same way, we can view a multidimensional array in two dimensions as a matrix with rows and columns, like a grid or a chessboard.
If we were to illustrate a multidimensional array in two dimensions in the same way as we did for a one-dimensional array, we could imagine that it looks like:
Furthermore, we can imagine an array with three dimensions as a block, or a cube, and if we try to illustrate it, we get:
Before we continue and learn more about the multidimensional array, make sure you are familiar with the one-dimensional array in java.
Similarly to the one-dimensional array, we can use, read and edit each element in the array using indexes. If we imagine a two-dimensional array (it is easiest to imagine) as a matrix arranged in rows and columns, we can read and edit elements in the same way as for a one-dimensional array by writing the array’s name followed by an index in square brackets.
If we illustrate what the index in a two-dimensional array looks like, we get an image according to figure 3 below, and to make it clearer, we have color-coded row index and column index.
The array we outlined in figure 3 consists of three columns and four rows, which gives a total of twelve elements.
A multidimensional array is created in a similar way as for a one-dimensional array, and it can also be described as that there are generally two approaches to creating a multidimensional array. We will go through syntax followed by a shorter example for both, and we have decided to call them approach one and approach two.
If we start with syntax to declare a two-dimensional array that we think of as a table of rows and columns
// Declare two-dimensional array with approach one data type[][] name = new data type[number of elements(row)][number of elements (column)];
Furthermore, if we imagine a coordinate system with x-, y- and z-axis, we create a three-dimensional array by using.
// Declare three-dimensional array with approach one data type[][][]name = new data type[element x-axis][element y-axis][element z-axis];
To conclude, let’s take the declaration step by step
Let’s take a short example to show what it looks like when using what we call approach one to create a two-dimensional array with 4 rows and 3 columns. If we want to edit or use an element in the array, we do it in the same way as for a one-dimensional array. We can start by inserting three values into our two-dimensional array twoAr.
public class Example{
public static void main(String[] args) {
int [][] twoAr = new int [4][3];
twoAr[0][2] = 15;
twoAr[2][1] = 7;
twoAr[3][0] = 22;
}
}
That will look like
Furthermore, if we then want to use the values we have put into our array, we can for example use
public class Example{
public static void main(String[] args) {
int [][] twoAr = new int [4][3];
twoAr[0][2] = 15;
twoAr[2][1] = 7;
twoAr[3][0] = 22;
int sum = twoAr[0][2] + twoAr[2][1];
int sumAll = twoAr[0][2] + twoAr[2][1] + twoAr[3][0];
int multi = twoAr[0][2] * twoAr[2][1];
System.out.println(sum);
System.out.println(sumAll);
System.out.println(multi);
}
}
Resulting in
22 44 105
We can also create multidimensional arrays with what we call approach two, similarly as we saw for the one-dimensional arrays where we can directly assign values to the array element when declaring it.
// Declare two-dimensional array with approach two
data type [][] name = {{ value, value, ... },
{ value, value, ... },
{ value, value, ... }};
Note that in this case, it is curly brackets { } that are used to the right of the equals sign.
Let’s look at a short example of how to create a two-dimensional array in Java with what we call approach two.
public class Example{
public static void main(String[] args) {
int [][] twoArr2 = {{2, 3},
{34, 56},
{44, 654, 79},
{12, 9, 23, 44}};
}
}
Moreover, if we then illustrate the array twoArr2
It is important to pay attention to that we have not created a 4 x 4 matrix; instead, the rows of our array are having a different number of columns. For example, if we would like to add an element to index [1][2] and type
public class Example{
public static void main(String[] args) {
int [][] twoArr2 = {{2, 3},
{34, 56},
{44, 654, 79},
{12, 9, 23, 44}};
twoArr2[1][2] = 15;
}
}
We will get java.lang.ArrayIndexOutOfBoundsException. In such cases, we need to create a new array to be able to add more indexes. In the next article, we will learn about ArrayList, which makes it possible to work with changing collections of data.
Let’s have a look at examples of how to use a two-dimensional and three-dimensional array in Java.
If we want to loop through and search a two-dimensional array, we need to use two for-loops. Similarly, if we had a three-dimensional array, we would have needed three for-loops, so one for-loop per dimension. This can be a little tricky to understand at first, so let’s look at it with an easy and methodical example.
We use the same two-dimensional array, twoAr, from the previous example and insert a couple of values.
public class Example{
public static void main(String[] args) {
int [][] twoAr = new int [4][3];
twoAr[0][2] = 15;
twoAr[2][1] = 7;
twoAr[2][2] = 46;
twoAr[3][0] = 22;
twoAr[3][1] = 33;
}
}
Resulting in
Then we will use the two for-loops and the .length function to get the length of each row and each column.
public class Example{
public static void main(String[] args) {
int [][] twoAr = new int [4][3];
twoAr[0][2] = 15;
twoAr[2][1] = 7;
twoAr[2][2] = 46;
twoAr[3][0] = 22;
twoAr[3][1] = 33;
for (int row = 0; row < twoAr.length; row++){
for (int column = 0; column < twoAr[row].length; column++){
}
}
}
}
We use the first for-loop to go through each row. We will start at row 0 because the index for an array in Java always starts at 0.
for (int row = 0; row < twoAr.length; row++){
Then, we add the for-loop that checks each column in that row.
for (int column = 0; column < twoAr[row].length; column++){
What we are doing is going through the array row by row, in other words, we start at row index 0 and check all the elements there, then we jump down to row index 1, then continue like this. If we would print all elements in our array twoAr that don’t have the value 0, we see clearly which order the for loops goes through twoAr
public class Example{
public static void main(String[] args) {
int [][] twoAr = new int [4][3];
twoAr[0][2] = 15;
twoAr[2][1] = 7;
twoAr[2][2] = 46;
twoAr[3][0] = 22;
twoAr[3][1] = 33;
for (int row = 0; row < twoAr.length; row++){
for (int column = 0; column < twoAr[row].length; column++){
// Evaluate that the value is not 0
if(twoAr[row][column] != 0){
System.out.println(twoAr[row][column]);
}
}
}
}
}
Resulting in
15 7 46 22 33
Finally, what is usually a bit complicated to understand is the twoAr[row].length command, but what it does is that for each line, it takes the length of that line. In our case, all rows are the same length, but a two-dimensional array can have different length rows. Furthermore, note that the variable row is something we have created in the for loop
If we now would like to add a feature to our program. Say we want to find the largest value in the two-dimensional array from the previous example and print the value plus index where it was found.
int [][] twoAr = new int [4][3]; twoAr[0][2] = 15; twoAr[2][1] = 7; twoAr[2][2] = 46; twoAr[3][0] = 22; twoAr[3][1] = 33;
This is easily done by using two for loops and an if statement.
int maxVar = twoAr[0][0];
int rowIndex = 0;
int columnIndex = 0;
for (int row = 0; row < twoAr.length; row++){
for (int column = 0; column < twoAr[row].length; column++){
if (twoAr[row][column] > maxVar){
maxVar = twoAr[row][column];
rowIndex = row;
columnIndex = column;
}
}
}
Finally, we use System.out.println
System.out.println("Value: " + maxVar + " at index " +
rowIndex + ":" + columnIndex);
to show our result
Value: 46 at index 2:2
Let’s look at a third and final example where we will search through a three-dimensional array. To help us, we will use three for loops, and what we will do in this example is to show the value of each element with the associated index.
To begin with, we create a three-dimensional array with some randomly assigned values
int[][][] threeArr = { { { 1, 2, 3 }, { 4, 5, 6 } },
{ { 10, 20, 30 }, { 40, 50, 60 } } };
Then we initiate the three for-loops we use to go through all the elements in threeArr
for (int i = 0; i < threeArr.length; i++) {
for (int j = 0; j < threeArr[i].length; j++) {
for (int k = 0; k < threeArr[i][j].length; k++) {
// Print the information
System.out.print("threeArr[" + i + "][" + j + "][" + k + "] = "
+ threeArr[i][j][k] + "\t");
}
// Used only for formating
System.out.println();
}
// Used only for formating
System.out.println();
}
Finally, the result if we execute the code above will be
threeArr[0][0][0] = 1 threeArr[0][0][1] = 2 threeArr[0][0][2] = 3 threeArr[0][1][0] = 4 threeArr[0][1][1] = 5 threeArr[0][1][2] = 6 threeArr[1][0][0] = 10 threeArr[1][0][1] = 20 threeArr[1][0][2] = 30 threeArr[1][1][0] = 40 threeArr[1][1][1] = 50 threeArr[1][1][2] = 60
Please leave feedback and help us continue to make our site better.
How useful was this article?
We are sorry that this post was not useful for you!
Let us improve this post!
Tell us how we can improve this post?
Basically, a multidimensional array is used to place an array in an array. It may sound complicated, but imagine that you want to save data in tabular format, for example, the test result for the students in a class. This means that we get more storage places to work with; therefore, usually described as an array of an array. In other words, a multidimensional array is used to store information in a matrix form; for example, a calendar or schedule cannot be realized as a one-dimensional array.
A multidimensional array consists of two or more dimensions. We can think of a two-dimensional array as a matrix or table and a three-dimensional array as a cube. A multidimensional array is usually described as a way to place an array in another array to group and work with data. Multidimensional arrays are created similarly as for a one-dimensional array, and it can also be said here that there are generally two approaches.
// Declare two-dimensional array with approach one data type[][] name = new data type[number of elements(row)][number of elements (column)];
// Declare two-dimensional array with approach two
data type [][] name = {{ value, value, ... },
{ value, value, ... },
{ value, value, ... }};
In the same way, as for a one-dimensional array, we can use, read and edit each element in a multidimensional array using indexes. If we imagine a two-dimensional array as a matrix or a grid arranged in rows and columns, then we can, in the same way as for a one-dimensional array by writing the name of the array followed by an index in square brackets, read and edit elements.
The easiest way is to use for loops. For example, if we were to search through a two-dimensional array, we would need to use two for-loops; similarly, if we were to have a three-dimensional array, we would need three for-loops. Thus, one for-loop per dimension could be said.
No, it’s okay that they are of different lengths. We can easily create a two-dimensional array that contains different numbers of elements per row.