从包含Arraylists的ArrayList中生成一个Array

时间:2012-12-17 15:58:36

标签: java arrays arraylist toarray

我有一个问题。

在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。

3 个答案:

答案 0 :(得分:1)

你必须

  1. 迭代外部ArrayList
  2. 使用toArray将每个条目转换为数组
  3. 将这些数组逐个添加到数组中
  4. 它不漂亮,但实际上并没有更好的方法。

答案 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;
}