如何将带有整数的ArrayList转换为正常的整数数组?

时间:2018-02-27 21:13:33

标签: java arrays

    Temp = ReadLeaderboard();
    int[] TrueLeaderboards = Temp.toArray(new int[Temp.size()]);

ArrayList Temp正确读取数据,但是当我尝试将其转换并存储到正常的整数数组时,它将不允许它?

3 个答案:

答案 0 :(得分:4)

您可以使用流来完成此任务。

List<Integer> integers = magicSupplier();  // however it is that you get the list
int[] ints = integers.stream().mapToInt(Integer::intValue).toArray();

否则,您需要将Integer取消装箱到int,因为对象Integer不是原始int。您需要取消选中此选项的原因是您的代码不起作用的原因:您基本上提供int[]来填充Integer

此外,Java命名约定规定您应该使用小写名称命名变量(除非它们是常量),即应将Temp变量称为temp。只有对象应该像Temp一样大写。

答案 1 :(得分:2)

它不允许您向toArray method发送int[],因为该方法接受类型参数的数组,该数组参数必须是引用类型,而不是基本类型,例如{ {1}}。

int

您可以使用Arrays.setAll将元素复制到您创建的数组中。该方法采用public <T> T[] toArray(T[] a) 提供索引并期望值。

IntUnaryOperator

设置int[] arr = new int[temp.size()]; Arrays.setAll(arr, index -> temp.get(index)); Arrays.setAlllong[]数组以及相应的double[]方法的T[]重载都存在重载方法

答案 2 :(得分:0)

您不能将原始数组用作通用参数。请参阅Why don't Java Generics support primitive types?并改为使用primitive wrapper

Integer[] array = list.toArray(new Integer[list.size()]);