高性能-每个
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) }感谢评论中的其他问题;)这是fitting
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)
顺便说一句,Marcelos答案的复杂度为O(2n),因为它迭代了两次(在后台):首先
Double[]从列表中进行,然后解开
double值。


![如何从列表中投射 在Java中翻倍[]? 如何从列表中投射 在Java中翻倍[]?](http://www.mshxw.com/aiimages/31/449695.png)
