Высокая производительность - каждый объект Double
переносит одно значение double
.Если вы хотите сохранить все эти значения в массиве double[]
, то у вас есть для перебора коллекции Double
экземпляров.Отображение O(1)
невозможно, это должно быть самое быстрое, что вы можете получить:
double[] target = new double[doubles.size()];
for (int i = 0; i < target.length; i++) {
target[i] = doubles.get(i).doubleValue(); // java 1.4 style
// or:
target[i] = doubles.get(i); // java 1.5+ style (outboxing)
}
Спасибо за дополнительный вопрос в комментариях;) Вот исходный код метода подгонки ArrayUtils#toPrimitive
:
public static double[] toPrimitive(Double[] array) {
if (array == null) {
return null;
} else if (array.length == 0) {
return EMPTY_DOUBLE_ARRAY;
}
final double[] result = new double[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = array[i].doubleValue();
}
return result;
}
(И поверьте мне, я не использовал его для своего первого ответа - хотя он выглядит ... довольно похоже :-D)
Кстати,Сложность ответа Марселоса - O (2n), потому что он повторяется дважды (за кадром): сначала сделать Double[]
из списка, затем развернуть значения double
.