white hexagonal glass window ceiling with coffee crema cream bubbles

6.1 Java | Two-Dimensional Array Basics | 2D Array Making, Finding Length & Ragged Arrays

Table of Contents

Introduction

Data in a table or a matrix can be represented using a two dimensional array.

The preceding ___ introduces how to use one-dimensional arrays to store linear collections of elements. You can use a two-dimensional array to store a matrix or a table. For example, the following table that lists the distances between cities can be stored using a two-dimensional array named distances.

Table showing city distance data for a two dimensional array Java

The two dimensional array equivalent:

double[][] distances = {
    {0, 983, 787, 714, 1375, 967, 1087},
    {983, 0, 214, 1102, 1763, 1723, 1842},
    {787, 214, 0, 661, 781, 810},
    {714, 1102, 888, 0, 661, 781, 810},
    {1375, 1763, 1549, 661, 0, 1426, 1187},
    {967, 1723, 1548, 781, 1426, 0, 239},
    {1087, 1842, 1627, 810, 1187, 239, 0},
};

Two Dimensional Array Basics

An element in a two dimensional array is accessed through a row and a column index.

How do you declare a variable for two dimensional arrays? How do you make a two dimensional array? How do you access elements in a two dimensional array? This section addresses these issues.

Declaring Variables of and Making Two Dimensional Arrays

The syntax for declaring a two-dimensional array is:

elementType[][] arrayRefVar;

or

elementType arrayRefVar[][]; // Allowed, but not preferred style of syntax

As an example, here is how you would declare a two-dimensional array variable matrix of int values:

int[][] matrix;

or

int matrix[][]; // Allowed, but not preferred style of syntax

You can make a two dimensional array of 5-by-5 int values and assign it to matrix using this syntax:

matrix = new int[5][5];

Two subscripts are used in a two dimensional array, one for the rows and another for the columns. As in a one dimensional array, the index for each subscript is of the int type and starts from 0, as show below in table (a).

Java Tables Showing how two dimensioal array works
(a) The index of each subscript of a two dimensional array is an int value, starting from 0.

To assign the value 7 to a specific element at row 2 and column 1, as shown in table (b), you can use the following syntax:

matrix[2][1] = 7;

To make the a point clear: the 1st bracket [] is references the rows. The 2nd [] is references the columns.

*Note that a common mistake is to use matrix[2, 1] to access the element at row 2 and column 1. In Java, each subscript must be enclosed in a pair of square brackets.

You can also use an array initializer to declare, make, and initialize a two dimensional array. For example, the following code:

int[][] array = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9},
    {10, 11, 12},
};

makes an array with specified initial values, as shown in table (c). This is code is equivalent to:

int[][] array = new int[4][3];
array[0][0] = 1; array[0][1] = 2; array[0][2] = 3;
array[1][0] = 4; array[1][1] = 5; array[1][2] = 6;
array[2][0] = 7; array[2][1] = 8; array[2][2] = 9;
array[3][0] = 10; array[3][1] = 11; array[3][2] = 12;

Obtaining the Lengths of Two-Dimensional Arrays

A two-dimensional array is actually an array in which each element is a one-dimensional array. The length of an array x is the number of elements in the array, which can be obtained using x.length. x[0], x[1],…, and x[x.length-1] are arrays. Their lengths can be obtained using x[0].length, x[1].length,…, and x[x.length-1].length.

In other words, Number of Rowsx.length and Number of Columns = x[x.length-1].length.

For example, suppose x = new int[3][4], x[0], x[1], and x[2] are one dimensional arrays and each contains four elements. x.length is 3, and x[0].length, x[1].length, and x[2].length are 4. Here’s a diagram showing the lengths of a two dimensional array:

Java diagram depicting the lengths of two dimensional arrays
A two dimensional array is a one dimensional array in which each element is another one dimensional array.

Ragged Arrays

Each row in a two dimensional array is itself an array. Thus, the rows can have different lengths. An array of this kind is known as a ragged array. Here is an example of making a ragged array:

Java depicting a diagram of a Ragged Array

As you can see, triangleArray[0].length is 5, traingleArray[1].length is 4, triangleArray[2] is 3, triangleArray[3] is 2, and triangleArray[4] is 1. If you don’t know the values in a ragged array in advance, but do know the sizes- say, the same as before- you can make a ragged array using the following syntax:

You can now assign values to the array. For example,

triangleArray[0][3] = 50;
traingleArray[4][0] = 45;

*Note that the syntax new int[5][] for making an array requires the first index to be specified. So new int[][] would be wrong.


◄◄◄BACK | NEXT►►►

What's Your Opinion?