Comment je peux faire ça?
J'ai un arraylist, avec des éléments flottants. (Arraylist <Float>)
(float[]) Floats_arraylist.toArray()
ça ne marche pas.
ne peut pas lancer de l'objet [] pour flotter []
Bouclez-le vous-même.
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.
}
Le nullcheck est obligatoire pour éviter NullPointerException
car un Float
(un objet) peut être null
tandis qu'un float
(une primitive) ne peut pas être null
du tout.
Dans le cas où vous êtes sur Java 8 déjà et ce n'est pas un problème pour finir avec double[]
Au lieu de float[]
, Considérez Stream#mapToDouble()
(non, il n'y a pas de méthode telle que mapToFloat()
).
List<Float> floatList = getItSomehow();
double[] doubleArray = floatList.stream()
.mapToDouble(f -> f != null ? f : Float.NaN) // Or whatever default you want.
.toArray();
Vous pouvez utiliser Apache Commons ArrayUtils.toPrimitive()
:
List<Float> list = new ArrayList<Float>();
float[] floatArray = ArrayUtils.toPrimitive(list.toArray(new Float[0]), 0.0F);