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[]被视为单个对象,而不是根据Generic的 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 回答