2011-01-29 15 views
33

どうすればいいですか?Java convert Arraylist <Float> to float []

私はフロート要素を持つarraylistを持っています。 (Arraylist <Float>)

(float[]) Floats_arraylist.toArray() 

これは機能しません。

がObjectからキャストすることはできません[]その上に自分を[]

+1

本の逆:http://stackoverflow.com/questions/2585907/is-there-a-native-java-method-to-box- an配列 –

+0

'int s =リスト。サイズ(); float [] a =新しいfloat [s]; – bestsss

+0

異なるプリミティブ型ですが、本質的には同じ質問です:[リストのバイト\ [\]を作成しています。] [i] = list.get(i) (http://stackoverflow.com/questions/1565483/creating-a-byte-from-a-listbyte) – finnw

答えて

34

ループをフロートします。

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. 
} 
float

(プリミティブ)は全然nullできないがFloat(オブジェクト)nullすることができるからである。nullcheckはNullPointerExceptionを回避するために必須ですあなたはすでにJavaの8にしていると、それはdouble[]の代わりfloat[]で終わるために問題ありません場合は

、(なしmapToFloat()としてはそのような方法はありません)Stream#mapToDouble()を考えます。

List<Float> floatList = getItSomehow(); 
double[] doubleArray = floatList.stream() 
    .mapToDouble(f -> f != null ? f : Float.NaN) // Or whatever default you want. 
    .toArray(); 
+8

このようなバマー。それは以前はC#で簡単だった。 – PawelP

+1

このような日に私はJavaが嫌いです。 –

25
を使用でき

のApache CommonsのArrayUtils.toPrimitive()

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