1

我有一个问题。

在Java中,我有一个ArrayList包含ArrayList双值的。从这里我想制作一个double[][]数组。

我知道如何通过 'toArray' 方法使用一维数组来制作它,但在这种情况下,我不确定如何去做并且总是在我的代码中收到错误消息。

我的 Aktuell 代码是:

double[][] test = new double[Data.getArrayList().size()][Data.getArrayList().size()];

double[][] array = Data.getArrayList().toArray(test);

其中 Data 是我的 ArrayList 的 ArrayList。

4

3 回答 3

1

你必须

  1. 迭代外部 ArrayList
  2. 使用 toArray 将每个条目转换为数组
  3. 将这些一个一个地添加到数组数组中

它并不漂亮,但实际上没有更好的方法来做到这一点。

于 2012-12-17T16:02:43.967 回答
1

我会使用这样的方法(把它放在一个实用程序类中)

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;
}
于 2012-12-17T16:04:29.053 回答
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;
}
于 2012-12-17T16:43:09.857 回答