Get rows and columns from a 2D array matrix in Java

Suppose I have a 2D array (matrix) in Java similar to this ...

int[][] MyMat = {{0,1,2,3,4}, {9,8,7,6,5}}; 

If I want to extract 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 a reduction to achieve this?

+6
source share
3 answers

If you want to get strings, you need to get the values ​​from each array, and then create a new array from the values. You can assign values ​​manually or use a for loop, for example ...

 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, expand the entire array so that it saves {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]; } 

Please note that it is impossible to have a shorthand notation that will allow you to easily get both rows and columns - you will need to decide which one you want and structure arrays in this format.

+3
source

If we know the row size and column size of a 2-dimensional array, we can achieve the above as shown below.

Let the number of rows be rows

Let the number of columns be -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 by time, you get an array of rows from your original array.

Otherwise, you can use Array of ArrayList with the length of your string array if no.of lines were specified during program execution.

+1
source

Simple like this:

1. Transpose your 2D matrix 2. Then do as you meint [] My0 = MyMat [0]; int [] My1 = MyMat [1];

+1
source

Source: https://habr.com/ru/post/918313/


All Articles