0

有没有办法在java中创建一个二维数组,其中数组的第二维具有可变数量的元素?

例如,如果我事先知道元素,我可以像这样一次性声明整个数组。 int[][] runs = {{1, 4, 7}, {2, 3}, {1}};

但是,我事先不知道这些值。我想部分声明数组来做这样的事情:

int[][] runs = new int[3];

然后用一个整数数组填充第一维的每个元素。但我得到一个错误。

4

3 回答 3

3

如果我正确理解你的问题,答案很简单。

您正在尝试创建一个不对称的多维数组。

您可以使用已知的 1 级大小和未知的 2 级大小来初始化数组。

例如:

int[][] runs = new int[3][];

然后...

runs[0] = new int[]{1,2,3};
runs[1] = new int[]{4};
runs[2] = new int[2]; // no elements defined, defaults to 0,0
System.out.println(Arrays.deepToString(runs));

输出:

[[1, 2, 3], [4], [0, 0]]
于 2013-09-15T20:33:53.400 回答
0
int[][] runs = new int[3][];

会成功的。

然后你需要初始化每个维度。

runs[0] = new int[5];
runs[1] = new int[x];
//and so on

每个维度的初始化可以在以后的任何时间完成,只要确保在初始化之前避免访问元素,否则你会得到一个NullPointerException

于 2013-09-15T20:33:38.473 回答
0

第二维可以是可变的。看看这里:

int[][] runs = new int[3][];
runs[0] = new int[55];
runs[0][3] = 412532;
runs[0][54] = 444;
runs[1] = new int[]{1, 2};
runs[2] = new int[]{2,3,4,2,4,5,3,5,2,6};

设置数组的第一个维度后,您可以做任何您想做的事情,如示例所示。

于 2013-09-15T20:37:57.643 回答