如何创建List <double> fromapache的常用数学DescriptiveStatistics <double>?</double> </double>

时间:2014-06-03 20:19:59

标签: java arrays statistics apache-commons-math

我有一个变量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

1 个答案:

答案 0 :(得分:1)

根据Arrays.asList()的方法签名,返回在参数中传递的类型List。

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

根本原因:

由于数组本身是一个Object,在你的情况下,double[]被视为单个对象,而不是 Generic 的double数组,因此返回List<double[]>而不是List<Double> {1}}。

解决方案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);