2016-11-01 5 views
2

Учитывая определение метода:Как преобразовать Double [] в double ...?

public void create(double... values); 

Этот метод называется так:

List<Double> values = ...; 
Double[] doubles = values.toArray(new Double[0]); 
create(doubles); // wont work 

Почему это не работает?

+3

перегрузить метод ('недействительным создания (Double ... значения)'). 'Double []' и 'double []' не могут быть преобразованы друг в друга. – Turing85

+3

Вам необходимо вручную преобразовать 'Arrays.stream (input) .mapToDouble (Function.identity()). ToArray()'. –

+0

ну, метод, приведенный выше, является единственным средством для этого, нет другого метода – helt

ответ

2
double[] unboxed = Stream.of(boxed).mapToDouble(Double::doubleValue).toArray(); 

Кредиты: https://stackoverflow.com/a/30117592/3635454

+0

Обратите внимание, что это копирует весь массив; что, конечно же, необходимо ответить на вопрос в его нынешнем виде (у вас есть мой голос). Но, по возможности, его следует избегать, так как это действительно пустая трата циклов процессора. –

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