0

次のようなリストがあります。

List<Integer> arrInt={2,3,5};

このarraylistを配列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

4 に答える 4

7

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];
}
于 2013-07-28T08:21:04.947 に答える
0

Java のジェネリックは制限されています。(new float[]) を toArray のパラメータとして使用することはできません。代わりに (new 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;
}
于 2013-07-28T08:28:23.060 に答える
0

次のようにします。

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;
    }
于 2013-07-28T08:29:51.547 に答える
0

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;
}
于 2013-07-28T08:21:16.720 に答える