我有一个变量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
?
答案 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}}。
您可以通过简单的经典代码解决它:
double[] array = new double[] { 1, 2, 3 };
List<Double> list = new ArrayList<Double>();
for (double d : array) {
list.add(d);
}
只需将方法stats.getValues()
的返回类型从double[]
更改为Double[]
Double[] array = new Double[] { 1.0, 2.0, 3.0 };
List<Double> list = Arrays.asList(array);