Temp = ReadLeaderboard();
int[] TrueLeaderboards = Temp.toArray(new int[Temp.size()]);
ArrayList Temp正确读取数据,但是当我尝试将其转换并存储到正常的整数数组时,它将不允许它?
答案 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.setAll
和long[]
数组以及相应的double[]
方法的T[]
重载都存在重载方法
答案 2 :(得分:0)
您不能将原始数组用作通用参数。请参阅Why don't Java Generics support primitive types?并改为使用primitive wrapper:
Integer[] array = list.toArray(new Integer[list.size()]);