У меня есть переменная DescriptiveStatistics stats
из которой я хотел бы создать Double
array. Используя следующий код:
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
//...
DescriptiveStatistics stats;
//...
Arrays.asList(stats.getValues())
Я получаю List<double[]>
not List<Double>
. stats.getValues()
возвращает double[]
.
Как я могу исправить это и получить List<Double>
из этой DescriptiveStatistics
?
В соответствии с сигнатурой метода Arrays.asList(), которая возвращает List of type, переданный в аргументах.
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[]
рассматривается как один объект, а не как массив из double в соответствии с Generic, следовательно, List<double[]>
возвращается вместо List<Double>
.
Вы можете решить это простым классическим кодом:
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);
stats.getValues()
?