Конвертировать из 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;
}
Другие вопросы по тегам