我有一个问题。
在Java中,我有ArrayList
包含带有双值的ArrayList
。从此我想制作一个double[][]
数组。
我知道如何通过'toArray'方法使用1D阵列来实现它,但在这种情况下,我不知道如何处理ist并且总是在我的代码中收到错误消息。
我的Aktuell代码是:
double[][] test = new double[Data.getArrayList().size()][Data.getArrayList().size()];
double[][] array = Data.getArrayList().toArray(test);
其中Data是我的ArrayLists的ArrayList。
答案 0 :(得分:1)
你必须
它不漂亮,但实际上并没有更好的方法。
答案 1 :(得分:1)
我会使用这样的方法(把它放在Utility类中)
public static double[][] to2DArray(List<List<Double>> input) {
double[][] output = new double[input.size()][];
for (int i = 0; i < input.size(); i++) {
output[i] = new double[input.get(i).size()];
for (int j = 0; j < input.get(i).size(); j++) {
output[i][j] = input.get(i).get(j);
}
}
return output;
}
答案 2 :(得分:0)
这可能比迭代矩阵中的每个元素更快:
private Double[][] to2DArray(ArrayList<ArrayList<Double>> data)
{
Double[][] result = new Double[data.size()][];
Double[] temp;
int mainIdx = 0;
for (List<Double> arrayOfDouble : data)
{
temp = new Double[arrayOfDouble.size()];
result[mainIdx++] = arrayOfDouble.toArray(temp);
}
return result;
}