将整数对象的数组列表转换为整数数组?
我尝试了下面的代码,但它不起作用。我是否必须使循环复制到数组中?ArrayList
int[]intArray = (int[]) integerArrayList.toArray();
我尝试了下面的代码,但它不起作用。我是否必须使循环复制到数组中?ArrayList
int[]intArray = (int[]) integerArrayList.toArray();
如果你想要基元类型数组,你可以使用Apache Commons
ArrayUtils#toPrimitive
方法从包装器数组中获取基元数组:-
public static int[] toPrimitive(Integer[] array)
你可以这样使用它: -
int[] arr = ArrayUtils.toPrimitive((Integer[])integerArrayList.toArray());
或者,您可以使用 toArray 方法的 1-arg 版本,该方法采用数组并仅返回该类型的数组。这样,您就不必进行类型转换。
List<Integer> myList = new ArrayList<Integer>();
Integer[] wrapperArr = myList.toArray(new Integer[myList.size()]);
// If you want a `primitive` type array
int[] arr = ArrayUtils.toPrimitive(wrapperArr);
但是,如果您对数组没问题(这当然不会给您带来麻烦),那么您不需要执行最后一步。wrapper type
此外,还可以创建基元数组,而不必创建该中间包装器类型数组。为此,您必须通过以下方式编写: -loop
int[] arr = new int[myList.size()];
for(int i = 0; i < myList.size(); i++) {
if (myList.get(i) != null) {
arr[i] = myList.get(i);
}
}
您需要循环访问并复制它。
int[] intArray = new int[integerArrayList.size()];
for (int i = 0; i < intArray.length; i++) {
intArray[i] = integerArrayList.get(i);
}