有没有办法在java中创建二维数组,其中数组的第二维具有可变数量的元素?
例如,如果我事先知道了这些元素,我可以像这样一次声明整个数组。
int[][] runs = {{1, 4, 7}, {2, 3}, {1}};
但是,我事先并不知道这些价值观。我想部分声明数组做这样的事情:
int[][] runs = new int[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};
设置数组的第一个维度后,您可以执行任何操作,如示例所示。