1

一つ質問があります。

Javaには、double値を持つArrayListを含むものがあります。ArrayListこれからdouble[][]配列を作りたいです。

メソッド「toArray」を使用して1D配列で作成する方法は知っていますが、この場合、どのように実行すればよいかわからず、コードに常にエラーメッセージが表示されます。

私のAktuellコードは次のとおりです。

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

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

ここで、DataはArrayListのArrayListです。

4

3 に答える 3

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;
}
于 2012-12-17T16:04:29.053 に答える
1

必ず

  1. 外側の ArrayList を繰り返します
  2. toArray を使用して各エントリを配列に変換します
  3. これらを配列の配列に1つずつ追加します

美しくはありませんが、これ以上の方法はありません。

于 2012-12-17T16:02:43.967 に答える
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 に答える