Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换ArrayList<;双[][]>;加倍_Java_Arrays_Arraylist - Fatal编程技术网

Java 转换ArrayList<;双[][]>;加倍

Java 转换ArrayList<;双[][]>;加倍,java,arrays,arraylist,Java,Arrays,Arraylist,我有一个数组列表,其中每个元素都是一个double[1][3]列表。现在,如果数组列表包含n个成员,我希望我的输出是一个大小为double[n][3]的列表。基于此,我尝试了以下方法: ArrayList<double[][]> testArray = new ArrayList<double[][]>(); double [][] testList = new double[testArray.size()][]; for(double [][] temp : test

我有一个数组列表,其中每个元素都是一个
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);
他们都不是为我工作的。任何帮助都将不胜感激。谢谢。

数组列表():表示一个一维数组,其中每个元素都是一个二维数组

有多个
double[][]
元素

如果您想要单个元素,那么可以使用
.get(index)
方法获得它

如果要将
ArrayList
转换为
double[][][]
,请将代码稍微更改为

double[][][] testList = new double[testArray.size()][][];
for(int i=0;i<testArray.size();i++){
   testList[i] = testArray.get(i);
}
double[]testList=new double[testArray.size()][];
for(int i=0;i
ArrayList()
:表示一个一维数组,其中每个元素都是一个二维数组

有多个
double[][]
元素

如果您想要单个元素,那么可以使用
.get(index)
方法获得它

如果要将
ArrayList
转换为
double[][][]
,请将代码稍微更改为

double[][][] testList = new double[testArray.size()][][];
for(int i=0;i<testArray.size();i++){
   testList[i] = testArray.get(i);
}
double[]testList=new double[testArray.size()][];

对于(int i=0;i如果列表中的所有数组的第一维度大小都等于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];
}
ArrayList testArray=new ArrayList();
int testArray=testArray.size();
double[][]测试列表=新的double[testArraySize][];
对于(int i=0;i
我认为这很简单,所以我只想评论一下:

get(i)[0]

这将从列表中获取
i
-th元素,这是一个二维数组,然后调用
[0]
操作符,该操作符访问第二个维度,这是我们要复制到目标数组的维度。这一切都是在列表中数组的第一个维度的大小等于1的要求下工作的

//这是一份清单吗

不,它是一个二维数组-它是一个列表元素


您的第二个代码片段在这种情况下不可能工作,因为
toArray
创建了一个数组,其中每个数组元素都是列表中的元素,因此将创建三维数组。但是,如果您要使用该方法,则必须为该方法提供一维数组作为参数(而不是二维数组)因为
toArray
获取并返回一维数组。在您的情况下,这将是一个一维数组,其中每个元素都是二维数组,这将导致三维数组,而这不是您想要的。如果列表中的所有数组的第一维大小都等于一,则您可以尝试:

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];
}
ArrayList testArray=new ArrayList();
int testArray=testArray.size();
double[][]测试列表=新的double[testArraySize][];
对于(int i=0;i
我认为这很简单,所以我只想评论一下:

get(i)[0]

这将从列表中获取
i
-th元素,这是一个二维数组,然后调用
[0]
操作符,该操作符访问第二个维度,这是我们要复制到目标数组的维度。这一切都是在列表中数组的第一个维度的大小等于1的要求下工作的

//这是一份清单吗

不,它是一个二维数组-它是一个列表元素


您的第二个代码片段在这种情况下不可能工作,因为
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];
}
List testArray=new ArrayList();
double[]testList=新的double[testArray.size();
int pos=0;
用于(双[]温度:测试阵列){
测试列表[pos++]=temp[0];
}
这将创建一个浅拷贝。对
testArray
值的任何修改都将通过
testList
数组“可见”


命名注意事项:
testArray
实际上是一个列表,而
testList
实际上是一个数组。

您的
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];
}
List testArray=new ArrayList();
double[]testList=新的double[testArray.size();
int pos=0;
用于(双[]温度:测试阵列){
测试列表[pos++]=temp[0];
}
这将创建一个浅拷贝。对
testArray
值的任何修改都将通过
testList
数组“可见”

命名注意事项:
testArray
实际上是一个列表,而
testList
实际上是一个数组。

testArray.get(i);不起作用,它必须被testArray.get(i)[0]替换;相反。testArray.get(i);不起作用,它必须被testArray.get(i)[0]替换。