有没有办法在java中创建一个二维数组,其中数组的第二维具有可变数量的元素?
例如,如果我事先知道元素,我可以像这样一次性声明整个数组。
int[][] runs = {{1, 4, 7}, {2, 3}, {1}};
但是,我事先不知道这些值。我想部分声明数组来做这样的事情:
int[][] runs = new int[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]]
int[][] runs = new int[3][];
会成功的。
然后你需要初始化每个维度。
runs[0] = new int[5];
runs[1] = new int[x];
//and so on
每个维度的初始化可以在以后的任何时间完成,只要确保在初始化之前避免访问元素,否则你会得到一个NullPointerException
第二维可以是可变的。看看这里:
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};
设置数组的第一个维度后,您可以做任何您想做的事情,如示例所示。