数组中的动态第二维

时间:2013-09-15 20:30:57

标签: java arrays

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

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

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

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

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

3 个答案:

答案 0 :(得分: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]]

答案 1 :(得分:0)

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

会做的伎俩。

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

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

每个维度的初始化可以在以后的任何时间完成,只需确保在初始化之前避免访问元素,否则您将获得NullPointerException

答案 2 :(得分: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};

设置数组的第一个维度后,您可以执行任何操作,如示例所示。