多维数组:可变长度行?

时间:2013-05-22 11:20:52

标签: java multidimensional-array variable-length-array

可以执行可变长度列,例如:

private int k[][] = new int[3][];

for(int i = 0; i < k.length; i++) {
   k[i] = new int[i+1];
}

我想知道如果知道列的长度是否可以进行可变长度的行?:

private int k[][] = new int[][5];

for(int i = 0; i < k.length; i++) {
   // How would you do this?
}

谢谢。

1 个答案:

答案 0 :(得分:3)

基本上,你不能。 “多维”数组只是一个数组数组。因此, 要知道“外部”数组的大小,以便创建它。

所以你的选择是:

  • array[column][row]代替array[row][column]
  • 的方式使用数组
  • 请改用列表,以便随时添加新行:

    List<Object[]> rows = new ArrayList<Object[]>();
    for (SomeData data : someSource) {
        Object[] row = new Object[5];
        ...
        rows.add(row);
    }
    

    (或者甚至更好,将您的“行”概念封装在一个单独的类中,因此您拥有List<Row>。)