1.为什么有这个问题?
·因为 ArrayList
的 toArray
无法对 int
生效。
↓
2.为什么无法对 int
生效?
·因为int不是对象,所以不是 object 的子类,只是基本的数据类型。
↓
3.那么如何转换成 int[]
数组。
①先转为 Integer[]
数组。
List<Integer> list = new ArrayList<>();
Integer[] arr = list.toArray(new Integer[list.size()]);
再转换成 int[]
数组
List<Integer> list = new ArrayList<>();
.......
Integer[] arr = list.toArray(new Integer[list.size()]); // 先转换为包装类型数组
int[] intArr = new int[list.size()];
for (int i = 0; i < arr.length; i++) { // 再一个个遍历得到基本类型数组
intArr[i] = arr[i].intValue();
}
②创建一个数组,通过循环赋值。
List<Integer> list = new ArrayList<>();
.....
int[] intArr = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
intArr[i] = list.get(i); // 直接获取list的值,应该发生了强制转换
}
③通过Stream流转换
List<Integer> list =new ArrayList<>();
int[] arr= Arrays.stream(list).mapToInt(Integer::valueOf).toArray();