将整数对象的数组列表转换为整数数组?

2022-09-03 09:20:35

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

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

int[]intArray = (int[]) integerArrayList.toArray();

答案 1

如果你想要基元类型数组,你可以使用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);
    }
}

答案 2

您需要循环访问并复制它。

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