将整数对象的ArrayList转换为int数组?

App*_*der 13 java arrays arraylist

可能重复:
如何将包含整数的ArrayList转换为原始int数组?

我尝试了下面的代码,但它不起作用.我是否必须将循环复制ArrayList到数组中?

int[]intArray = (int[]) integerArrayList.toArray();
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 23

如果你想要原始类型数组,你可以使用方法从包装器数组中获取原始数组:Apache Commons ArrayUtils#toPrimitive

public static int[] toPrimitive(Integer[] array)
Run Code Online (Sandbox Code Playgroud)

您可以像这样使用它: -

int[] arr = ArrayUtils.toPrimitive((Integer[])integerArrayList.toArray());
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用1-arg版本的toArray方法,该方法接受一个数组并仅返回该类型的数组.这样,您就不必进行类型转换.

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);
Run Code Online (Sandbox Code Playgroud)

但是,如果你对wrapper type阵列没问题(肯定不会给你带来麻烦),那么你不需要做最后一步.


此外,您还可以创建基本数组,而无需创建该中间Wrapper类型数组.为此你必须写下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);
    }
}
Run Code Online (Sandbox Code Playgroud)


FTh*_*son 7

你需要迭代并复制它.

int[] intArray = new int[integerArrayList.size()];
for (int i = 0; i < intArray.length; i++) {
    intArray[i] = integerArrayList.get(i);
}
Run Code Online (Sandbox Code Playgroud)