我有一个数组列表,其中每个元素都是一个double[1][3]
列表。现在,如果数组列表包含n个成员,则我希望输出为大小为double[n][3]
的列表。基于this post,我尝试了以下操作:
ArrayList<double[][]> testArray = new ArrayList<double[][]>();
double [][] testList = new double[testArray.size()][];
for(double [][] temp : testArray){
// temp is a list?
}
我还尝试了以下方法:
double [][] test = new double[testArray.size()][3];
test = testArray.toArray(test);
他们都没有为我工作。任何帮助将非常感激。谢谢。
最佳答案
如果列表中的所有数组的第一维尺寸等于1,则可以尝试:
ArrayList<double[][]> testArray = new ArrayList<double[][]>();
int testArraySize = testArray.size();
double [][] testList = new double[testArraySize][];
for (int i = 0; i < testArraySize; i++) {
testList[i] = testArray.get(i)[0];
}
我认为这非常简单,因此我仅就此发表评论:
get(i)[0]
这从列表中获取第
i
个元素,该元素是一个二维数组,然后调用[0]
运算符,该运算符访问第二个维,这是我们要复制到目标数组的内容。所有这些都是在列表中数组的第一个维度的大小等于1的要求下进行的。// temp是一个列表?
不,这是一个二维数组-这是一个列表元素。
在这种情况下,您的第二个代码片段将无法工作,因为
toArray
创建了一个数组,其中每个数组元素都是列表中的一个元素,因此将创建三维数组。但是仍然要使用该方法,则必须提供一维数组作为该方法的参数(不是二维),因为toArray
接受并返回一维数组。在您的情况下,这将是一个一维数组,其中每个元素都是一个二维数组,这将导致拥有不是您想要的三维数组。