1

配列DescriptiveStatistics statsを作成したい変数があります。Double次のコードを使用します。

import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
//...
DescriptiveStatistics stats;
//...
Arrays.asList(stats.getValues())

私は取得しList<double[]>ませんList<Double>stats.getValues()戻りますdouble[]

どうすればそれを修正してこれから取得できList<Double>ますDescriptiveStatisticsか?

4

1 に答える 1

1

引数で渡されたタイプのリストを返すArrays.asList()のメソッド シグネチャに従って。

public static <T> List<T> asList(T... a)

例えば:

double[] array=new double[]{1,2,3};
List<double[]> list=Arrays.asList(array); // Here T is `double[]` List of size 1

...

double[][] array = new double[][] { { 1, 2, 3 }, { 4, 5, 6 } };
List<double[]> list=Arrays.asList(array); // Here T is `double[]` List of size 2

...

List<Double> list=Arrays.asList(1.0,2.0,3.0); // Here T is double List of size 3

根本的な原因:

配列自体はオブジェクトであり、あなたの場合はジェネリックdouble[]のように倍精度の配列としてではなく、単一のオブジェクトとして扱われるため、代わりにが返されます。List<double[]>List<Double>

解決策 1

シンプルな古典的なコードで解決できます:

double[] array = new double[] { 1, 2, 3 };
List<Double> list = new ArrayList<Double>();
for (double d : array) {
    list.add(d);
}

解決策 2

メソッドの戻り値の型をstats.getValues()からdouble[]に変更するだけです。Double[]

Double[] array = new Double[] { 1.0, 2.0, 3.0 };
List<Double> list = Arrays.asList(array);
于 2014-06-03T20:29:23.443 に答える