Как создать список <Double> для общей математики fromapache DescriptiveStatistics <Double>?

1

У меня есть переменная 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?

  • 0
    Это зависит от того, что возвращает stats.getValues() ?
  • 0
    Вы можете использовать предикаты Guava и Collection2.transform ваш список доменов в другой список
Показать ещё 1 комментарий
Теги:
arrays
statistics
apache-commons-math

1 ответ

1
Лучший ответ

В соответствии с сигнатурой метода 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>.

Решение 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);
  • 0
    Мне пришлось перебирать массив (решение 1).
  • 0
    Отлично, давай. классика - все фавориты типа :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню