Get the Rows and Columns from a 2D array matrix in Java
Solution 1
If you want to get the rows, you need to get the values from each array, then create a new array from the values. You can assign the values manually, or use a for-loop, such as this...
int[][] MyMat = {{0,1,2,3,4}, {9,8,7,6,5}};
// get your columns... (easy)
int[] My0= MyMat[0]; //My0 = {0,1,2,3,4}
int[] My1= MyMat[1]; //My1 = {9,8,7,6,5}
// get the rows... (manually)
int[] My_0= new int[]{MyMat[0][0],MyMat[1][0]}; //My_0 = {0,9}
int[] My_1= new int[]{MyMat[0][1],MyMat[1][1]}; //My_1 = {1,8}
int[] My_2= new int[]{MyMat[0][2],MyMat[1][2]}; //My_2 = {2,7}
int[] My_3= new int[]{MyMat[0][3],MyMat[1][3]}; //My_3 = {3,6}
int[] My_4= new int[]{MyMat[0][4],MyMat[1][4]}; //My_4 = {4,5}
// get the rows... (as a for-loop)
int size = MyMat.length;
int[] My_0 = new int[size]; //My_0 = {0,9}
int[] My_1 = new int[size]; //My_1 = {1,8}
int[] My_2 = new int[size]; //My_2 = {2,7}
int[] My_3 = new int[size]; //My_3 = {3,6}
int[] My_4 = new int[size]; //My_4 = {4,5}
for (int i=0;i<size;i++){
My_0[i] = MyMat[i][0];
My_1[i] = MyMat[i][1];
My_2[i] = MyMat[i][2];
My_3[i] = MyMat[i][3];
My_4[i] = MyMat[i][4];
}
Otherwise, turn your entire array around so that it stores {row,column}
instead of {column,row}
, like this...
int[][] MyMat = {{0,9},{1,8},{2,7},{3,6},{4,5}};
// get the rows... (easy)
int[] My_0= MyMat[0]; //My_0 = {0,9}
int[] My_1= MyMat[1]; //My_1 = {1,8}
int[] My_2= MyMat[2]; //My_2 = {2,7}
int[] My_3= MyMat[3]; //My_3 = {3,6}
int[] My_4= MyMat[4]; //My_4 = {4,5}
// get the columns... (manually)
int[] My0= new int[]{MyMat[0][0],MyMat[1][0],MyMat[2][0],MyMat[3][0],MyMat[4][0]}; //My0 = {0,1,2,3,4}
int[] My1= new int[]{MyMat[0][1],MyMat[1][1],MyMat[2][1],MyMat[3][1],MyMat[4][1]}; //My1 = {9,8,7,6,5}
// get the columns... (as a for-loop)
int size = MyMat.length;
int[] My0 = new int[size]; //My0 = {0,1,2,3,4}
int[] My1 = new int[size]; //My1 = {9,8,7,6,5}
for (int i=0;i<size;i++){
My0[i] = MyMat[0][i];
My1[i] = MyMat[1][i];
}
Note that it isn't possible to have a shorthand that will allow you to get both the rows and the columns easily - you'll have to decide which you want more, and structure the arrays to be in that format.
Solution 2
If we know the size row and column size of 2-d array we can achieve above as follows
Let No.of Rows - rows
Let No.of Columns -clmns
int[][] my = new int[clmns][rows];
for(int i=0;i<clmns;i++)
for(int j=0;j< rows; j++)
my[i][j]=MyMat[j][i];
Then taking a column at time give you the row array of your original array.
Otherwise you can use Array of ArrayList with Array length of your rows if the no.of rows were given at run time of the program.
Anita
Updated on July 17, 2022Comments
-
Anita almost 2 years
Suppose that I have a 2D array (matrix) in Java like this...
int[][] MyMat = {{0,1,2,3,4}, {9,8,7,6,5}};
If I want to extract the columns, I can do it easily like this...
int[] My0= MyMat[0]; //My0 = {0,1,2,3,4} int[] My1= MyMat[1]; //My1 = {9,8,7,6,5}
But how can I extract the rows?...
int[] My_0= ?; //My_0 = {0,9} int[] My_1= ?; //My_1 = {1,8} int[] My_2= ?; //My_2 = {2,7} int[] My_3= ?; //My_3 = {3,6} int[] My_4= ?; //My_4 = {4,5}
Is there any shorthand for achieving this?