web-dev-qa-db-fra.com

Java convertit Arraylist <Float> en float []

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 []

41
lacas

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();
38
BalusC

Vous pouvez utiliser Apache Commons ArrayUtils.toPrimitive() :

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