Конвертировать из List<Integer> в массив float[]
У меня есть список следующим образом:
List<Integer> arrInt={2,3,5};
Я хочу преобразовать этот массив в массив float.
float[] result={2,3,5};
Мой код:
public float[] convertIntToFloat(List<Integer> arr)
{
List<Float> arrResult=new ArrayList<Float>();
for(int i=0;i<arr.size();i++)
{
float x=i;
arrResult.add(x);
}
float result[]=arrResult.toArray( new float[arr.size()]); //Error
return result;
}
Но это отображает ошибку в моем коде, как указано выше. Вы можете мне помочь?
4 ответа
List.toArray(T[])
принимает массив для типа Wrapper, а не для примитивного типа.
Вы должны сделать это так:
Float result[] = arrResult.toArray( new Float[arr.size()]);
Но это действительно не требуется. Потому что теперь вам нужно преобразовать это в массив примитивного типа. Это слишком много, верно?
Вы можете напрямую создать float[]
массив, а не проходя через ArrayList<Float>
, Просто поменяй arrResults
декларация для:
float[] arrResults = new float[arr.size()];
И в цикле for добавьте элементы в массив, используя:
for(int i = 0; i < arr.size(); ++i) {
arrResults[i] = arr[i];
}
Сделай это так:
public Float[] convertIntToFloat(List<Integer> arr)
{
List<Float> arrResult=new ArrayList<Float>();
for(int i=0;i<arr.size();i++)
{
float x=arr.get(i);
// float x=i; //Here you are retrieving index instead of value
arrResult.add(x);
}
Float result[] = arrResult.toArray( new Float[arr.size()]);
// float result[]=arrResult.toArray( new float[arr.size()]); //Error
return result;
}
Просто создайте float
массив напрямую:
public float[] convertIntToFloat(List<Integer> arr)
{
float[] arrResult = new float[arr.size()];
for(int i=0;i<arr.size();i++)
{
arrResult[i] = (float) arr[i];
}
return arrResult;
}
Общий в Java ограничен. Вы не можете использовать (new float[]) в качестве параметра toArray. Используйте вместо этого (новый Float[]). Однако на самом деле правильное орудие должно быть:
public float[] convertIntToFloat(List<Integer> arr)
{
float result = new float[arr.size()];
for(int i = 0; i < arr.size(); ++i)
{
result[i] = arr.get(i);
}
return result;
}