2013-12-04 2 views
0

Я использую Apache математическую библиотеку для матриц и один вот один из способов я пытаюсь использовать:Преобразование ArrayList двойного удвоится []

MatrixUtils.createRealDiagonalMatrix(double[] diagonal) 

Я не знаю размер при компиляции поэтому я использую ArrayList<Double>, чтобы сохранить диагональ, и позже я хочу передать это как параметр указанной функции. Как я могу наложить ArrayList на double[]? Я пробовал:

ArrayList<Double> arr = new ArrayList<Double>(n); 
... // Populate arr 
MatrixUtils.createRealDiagonalMatrix(arr.toArray(new Double[n])); 

Но я получаю ошибку рассогласования типа, так как Double [] и дважды [] различны.

+0

Измените метод, чтобы принять 'Double' массив. Или преобразуйте массив 'Double' в массив' double', стараясь не включать ссылки «null». –

+0

@SotiriosDelimanolis Не мой метод. Внешняя библиотека – Shmoopy

ответ

1

Если вы можете использовать сторонние библиотеки, я бы посоветовал вам дать guava библиотеку. Она имеет множество полезных функций и ваш случай может рассматриваться следующим образом:

List<Double> data = new ArrayList<Double>(); // your data 
MatrixUtils.createRealDiagonalMatrix(Doubles.toArray(data)); 

См javadoc для справки.

Смежные вопросы