多维数组:可变长度的行?

5

可以使用可变长度列,例如:

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

谢谢。

3
Java中的数组长度是固定的。如果需要可变大小的东西,请使用ArrayList。如果确实必须这样做,它也可以嵌套。 - Till Helge
编译器:无法在空维度后指定数组维度。 - johnchen902
1个回答

4

基本上你不能。"多维"数组只是一组数组。因此,你必须要先知道"外层数组"的大小才能创建它。

因此,你有以下几个选择:

  • Use the array in an inverted way as array[column][row] instead of array[row][column]
  • Use a list instead, so you can add new rows as you go:

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

    (Or even better, encapsulate your concept of a "row" in a separate class, so you have a List<Row>.)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接