我有一个列表如下:
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;
}
但它在我的代码中显示错误,如上所述。 你能救我吗?
答案 0 :(得分: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];
}
答案 1 :(得分: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;
}
答案 2 :(得分: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;
}
答案 3 :(得分: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;
}