Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Java (http://www.go4expert.com/articles/java-tutorials/)
-   -   Multi-dimensional arrays in Java (http://www.go4expert.com/articles/multi-dimensional-arrays-java-t1162/)

pradeep 11Aug2006 14:36

Multi-dimensional arrays in Java
 
Multi-dimensional arrays

Java, as with most languages, supports multi-dimensional arrays - 1-dimensional, 2-dimensional, 3-dimensional, ... This discusses 2-dimensional arrays, but the same principles apply to higher dimensions.

2-dimensional arrays


2-dimensional arrays are usually represented in a row-column approach on paper, and the terms "rows" and "columns" are used in computing.
Arrays of arrays

There are two ways to implement 2-dimensional arrays. Many languages reserve a block of memory large enough to hold all elements of the full, rectangular, array (number of rows times number of columns times the element size). Java doesn't do this. Instead Java builds multi-dimensional arrays from many one-dimensional arrays, the so-called "arrays of arrays" approach. [C++ supports both styles.]

There are a couple of interesting consequences of this: Rows may be different sizes. Also, each row is an object (an array) that can be used independently.

Declaration

Declare a 2-dimensional array as follows:

Code: Java

int[][] a2; // Declares, but doesn't allocate, 2-dim array.
 


Allocation

As with all arrays, the new keyword must be used to allocate memory for an array. For example,

Code: Java

int[][] a2 = new int[10][5];


This allocates an int array with 10 rows and 5 columns. As with all objects, the values are initialized to zero (unlike local variables which are uninitialized).

This actually allocates 6 objects: a one-dimensional array of 5 elements for each of the rows, and a one-dimensional array of ten elements, with each element pointing to the appropriate row array.

Processing 2-dimensional arrays

Often 2-dimensional arrays are processed with nested for loops. Notice in the following example how the rows are handled as separate objects. For example,

Code: Java

int[][] a2 = new int[10][5];
 // print array in rectangular form
 for (int r=0; r<a2.length; r++) {
     for (int c=0; c<a2[r].length; c++) {
         System.out.print(" " + a2[r][c]);
     }
     System.out.println("");
 }


Uneven rows

One consequence of arrays of arrays is that each row can be a different size ("ragged" arrays). For example, we could create a lower triangular array, allocating each row "by hand" as follows.

Code: Java

int[][] tri;
 tri = new int[10][]// allocate array of rows
 for (int r=0; r<tri.length; r++) {
     tri[r] = new int[r+1];
 }
 
 // print the triangular array (same as above really)
 for (int r=0; r<tri.length; r++) {
     for (int c=0; c<tri[r].length; c++) {
         System.out.print(" " + tri[r][c]);
     }
     System.out.println("");
 }


abcdou 12Aug2006 13:14

Re: Multi-dimensional arrays in Java
 
hi pradeep!

how about if the user will input student information?
Label(row 0) Lastname firstname address
dou abc malaysia

There are method()
1.Assign name
2.Display name
3.Sort name in ascending
4.Search name

how to do this pradeep
pls........

pradeep 12Aug2006 14:18

Re: Multi-dimensional arrays in Java
 
We will use a multi-dimensional array.

Code: Java

String[][] Data;
 
 //Assign the values, do it either dynamically or statically
 //For first fow
 Data[0][0] = "S"; //lastname
 Data[0][1] = "Pradeep"; //firstname
 Data[0][2] = "Kolkata"; //location
 
 //Second row
 Data[1][0] = "Bhimani"; //lastname
  Data[1][1] = "Shabbir"; //firstname
  Data[1][2] = "Kolkata"; //location
 
 //Add as many rows you want
 
 //printing
 System.out.print("Lastname\tFirstname\tLocation\n");
 for(i=0;i<2;i++)
 {
   for(j=0;j<3;j++)
   {
     System.out.print(Data[i][j]+"\t");
   }
   //move to new line
   System.out.print("\n");
 }



This should do the work for you.

abcdou 14Aug2006 05:02

Re: Multi-dimensional arrays in Java
 
thank you pradeep!!!

how about sorting and searching?

do you have any tutorial in two dimensional array?


thanks.....

pradeep 14Aug2006 11:31

Re: Multi-dimensional arrays in Java
 
You can use simple sorting algorithms like Bubble Sort,Selection Sort to sort the array data. Multi-dimensional array concepts can be applied to two-dimensional arrays. You are free to ask any specific questions you have about two-dimensional arrays.

abcdou 19Aug2006 09:08

Re: Multi-dimensional arrays in Java
 
how about in searching?

thanks pradeep

champion 12Jul2007 17:37

Re: Multi-dimensional arrays in Java
 
How do we test if the array is null not testing for a null element?

champion 12Jul2007 19:56

Re: Multi-dimensional arrays in Java
 
Quote:

Originally Posted by pradeep
We will use a multi-dimensional array.

Code: Java

String[][] Data;
 
 //Assign the values, do it either dynamically or statically
 //For first fow
 Data[0][0] = "S"; //lastname
 Data[0][1] = "Pradeep"; //firstname
 Data[0][2] = "Kolkata"; //location
 
 //Second row
 Data[1][0] = "Bhimani"; //lastname
  Data[1][1] = "Shabbir"; //firstname
  Data[1][2] = "Kolkata"; //location
 
 //Add as many rows you want
 
 //printing
 System.out.print("Lastname\tFirstname\tLocation\n");
 for(i=0;i<2;i++)
 {
   for(j=0;j<3;j++)
   {
     System.out.print(Data[i][j]+"\t");
   }
   //move to new line
   System.out.print("\n");
 }



This should do the work for you.

How do we test if the array is null not testing for a null element?

shilpa dessai 20Mar2008 15:08

Re: Multi-dimensional arrays in Java
 
Pradeep please reply soon we have to complete our project and we are stuck only due to this sorting code.......

pradeep 20Mar2008 15:32

Re: Multi-dimensional arrays in Java
 
Please post the 1D sorting you have already written!


All times are GMT +5.5. The time now is 18:26.