Подтвердить что ты не робот

Java конвертировать Arraylist <Float> в float []

Как я могу это сделать?

У меня есть arraylist, с элементами float. (Arraylist <Float>)

(float[]) Floats_arraylist.toArray()

он не работает.

не может отбрасываться из Object [] в float []

4b9b3361

Ответ 1

Прокрутите его самостоятельно.

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

Значение nullcheck является обязательным, чтобы избежать NullPointerException, потому что Float (объект) может быть null, в то время как Float (примитив) не может быть null вообще.

В случае, если вы уже на Java 8, и не проблема в итоге double[] вместо float[], рассмотрите Stream#mapToDouble() (нет такого метода, как mapToFloat()).

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

Ответ 2

Вы можете использовать Apache Commons ArrayUtils.toPrimitive():

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

Ответ 4

Один вкладыш:

Float[] array = list.toArray(new Float[list.size()]);