首先,我们在看到集合转数组的时候可能第一个想到的就是toArray(),但是我们在调用 toArray()
的时候,可能会遇到异常 java.lang.ClassCastException
;这是因为 toArray()
方法返回的类型是 Obejct[]
,如果我们将其转换成其他类型,可能就会抛出异常。 这是因为 Java并不支持向下转型。
方法一:通过遍历将集合中的元素一个个取出来放进数组里。
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
int[] res = new int[list.size()];
for(int i = 0; i < list.size(); i++){
res[i] = list[i];
}
方案二:通过泛型实现转换
List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1,2,3,4,5,6);
Integer[] nums = new Integer[list.size()];
nums = list.toArray(nums);
for(Integer n:nums){
System.out.println(n);
}
但是通过toArray()不能直接将List对象转换为一般类型的数组。
方案三:使用stream()流
List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1,2,3,4,5,6);
int []nums=new int[]{1,2,3};
//List<Integer> 转 int[]
int[] arr1 = list.stream().mapToInt(Integer::valueOf).toArray();
// int[] 转 List<Integer>
List<Integer> list1 = Arrays.stream(nums).boxed().collect(Collectors.toList());