我试图用下面的代码将包含Integer对象的ArrayList转换为原始int[],但它抛出了编译时错误.可以用Java进行转换吗?
List<Integer> x = new ArrayList<Integer>();
int[] n = (int[])x.toArray(int[x.size()]);
我试图用下面的代码将包含Integer对象的ArrayList转换为原始int[],但它抛出了编译时错误.可以用Java进行转换吗?
List<Integer> x = new ArrayList<Integer>();
int[] n = (int[])x.toArray(int[x.size()]);
你可以皈依,但我不认为有什么内置的东西可以自动做到这一点:
public static int[] convertIntegers(List<Integer> integers)
{
int[] ret = new int[integers.size()];
for (int i=0; i < ret.length; i++)
{
ret[i] = integers.get(i).intValue();
}
return ret;
}
(请注意,如果integers
或其中任何一个元素为null
,这将抛出NullPointerException.)
编辑:根据 comments ,您可能希望使用列表迭代器来避免列表的严重开销,例如LinkedList
:
public static int[] convertIntegers(List<Integer> integers)
{
int[] ret = new int[integers.size()];
Iterator<Integer> iterator = integers.iterator();
for (int i = 0; i < ret.length; i++)
{
ret[i] = iterator.next().intValue();
}
return ret;
}