从java中的二维数组中获取列

新手上路,请多包涵

在二维数组中,我可以很容易地获取行的数组,我怎样才能将列也作为数组获取呢?我需要一个适用于对象的解决方案,而不仅仅是基元。谢谢

        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];
    }

原文由 Pedro Gonzalez 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 703
2 个回答

没有“开箱即用”的方式,但您可以为此创建一个静态方法:

 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;
}

原文由 Eric Leibenguth 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是一个使用 Java 8 流的方法:

 int[] getColumn(int[][] matrix, int column) {
    return IntStream.range(0, matrix.length)
        .map(i -> matrix[i][column]).toArray();
}

如果你想处理太短的行:

 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();
}

原文由 sprinter 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题