[英]Convert ArrayList<double[][]> to double[][]
我有一个数组列表,其中每个元素都是double[1][3]
列表。 现在,如果数组列表包含n个成员,则我希望输出为大小为double[n][3]
。 根据这篇文章,我尝试了以下方法:
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
接受并返回一维数组。 在您的情况下,这将是一个一维数组,其中每个元素都是一个二维数组,这将导致具有三维数组,这不是您想要的。
for
循环,您已经有了一个不错的开始。 现在,您需要将内容从temp
复制到testList
,如下所示:
List<double[][]> testArray = new ArrayList<double[][]>();
double [][] testList = new double[testArray.size()][];
int pos = 0;
for(double [][] temp : testArray){
testList[pos++] = temp[0];
}
这将创建一个浅表副本。 对testArray
值的任何修改将通过testList
数组“可见”。
命名注意: testArray
实际上是一个列表,而testList
实际上是一个数组。
ArrayList<double[][]>()
:表示一维数组,其中每个元素都是一个二维数组。
有多个double[][]
元素。
如果只需要一个元素,则可以使用.get(index)
方法获取它。
如果要将ArrayList<double[][]>
为double[][][]
则将代码稍作更改
double[][][] testList = new double[testArray.size()][][];
for(int i=0;i<testArray.size();i++){
testList[i] = testArray.get(i);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.