Java converti Arraylist pour float []
-
27-10-2019 - |
Question
Comment puis-je faire?
Je n'ai ArrayList, avec des éléments de flotteur. (Arraylist <Float>)
(float[]) Floats_arraylist.toArray()
il ne fonctionne pas.
ne peut pas lancer de l'objet [] pour flotter []
La solution
Boucle sur 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
parce qu'un Float
(un objet) peut être null
alors qu'une float
(primitive) ne peut pas être null
du tout.
Dans le cas où vous êtes sur Java 8 déjà et il n'y a pas de problème pour se retrouver avec double[]
au lieu de float[]
, pensez Stream#mapToDouble()
(pas il n'y a pas de méthode que mapToFloat()
).
List<Float> floatList = getItSomehow();
double[] doubleArray = floatList.stream()
.mapToDouble(f -> f != null ? f : Float.NaN) // Or whatever default you want.
.toArray();
Autres conseils
Vous pouvez utiliser Apache Commons ArrayUtils.toPrimitive()
:
List<Float> list = new ArrayList<Float>();
float[] floatArray = ArrayUtils.toPrimitive(list.toArray(new Float[0]), 0.0F);
Apache Commons Lang à la de sauvetage.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow