Ped*_*lez 1 java multidimensional-array
在二维数组中,我可以轻松获取行的数组,如何将列作为数组?我需要一个适用于对象的解决方案,而不仅仅是原语.谢谢
int counter = 1;
int[][] matrix = new int[9][9];
for (int x = 0; x < matrix.length; x++) {
for (int y = 0; y < matrix[0].length; y++) {
matrix[x][y] = counter;
System.out.print(counter + " ");
counter++;
}
System.out.println();
}
for (int x = 0; x < matrix.length; x++) {
int[] row = matrix[x];
}
Run Code Online (Sandbox Code Playgroud)
这是一个使用 Java 8 流的方法:
int[] getColumn(int[][] matrix, int column) {
return IntStream.range(0, matrix.length)
.map(i -> matrix[i][column]).toArray();
}
Run Code Online (Sandbox Code Playgroud)
如果你想处理太短的行:
int[] getColumn(int[][] matrix, int column, int defaultVal) {
return IntStream.range(0, matrix.length)
.map(i -> matrix[i].length < column ? defaultVal : matrix[i][column])
.toArray();
}
Run Code Online (Sandbox Code Playgroud)
没有"开箱即用"的方式,但你可以为此创建一个静态方法:
public static Object[] getColumn(Object[][] array, int index){
Object[] column = new Object[array[0].length]; // Here I assume a rectangular 2D array!
for(int i=0; i<column.length; i++){
column[i] = array[i][index];
}
return column;
}
Run Code Online (Sandbox Code Playgroud)