Java将Arraylist <float>转换为float [] </float>

时间:2011-01-29 15:07:33

标签: java arrays casting arraylist autoboxing

我怎么能这样做?

我有一个带有浮动元素的arraylist。 (Arraylist <Float>)

(float[]) Floats_arraylist.toArray()

它不起作用。

  

无法从Object []转换为float []

3 个答案:

答案 0 :(得分:38)

自己循环。

List<Float> floatList = getItSomehow();
float[] floatArray = new float[floatList.size()];
int i = 0;

for (Float f : floatList) {
    floatArray[i++] = (f != null ? f : Float.NaN); // Or whatever default you want.
}

为了避免NullPointerException,必须使用nullcheck,因为Float(对象)可以是nullfloat(基元)不能是null一点都不。

如果您已经使用Java 8并且以double[]而不是float[]结束是没有问题的,请考虑Stream#mapToDouble()(不,没有{{1}这样的方法})。

mapToFloat()

答案 1 :(得分:28)

您可以使用Apache Commons ArrayUtils.toPrimitive()

List<Float> list = new ArrayList<Float>();
float[] floatArray = ArrayUtils.toPrimitive(list.toArray(new Float[0]), 0.0F);

答案 2 :(得分:4)