代码:
public class Test {public static void main(String[] args) {Integer[] a = {1, 2, 3};// 数组转成集合// 以下参数是一个可变参数,可以直接写数组,或者直接写可变参数值也行,比如Arrays.asList(1,2,3,4)这种形式List<Integer> list = Arrays.asList(a);System.out.println("输出集合中的元素:");for (Integer i : list) {System.out.println(i);}// 集合转成数组Integer[] b = list.toArray(new Integer[0]);System.out.println("输出数组中的元素:");for (Integer i : b) {System.out.println(i);}}}
结果:
输出集合中的元素:123输出数组中的元素:123
解释:
集合和数组的转换当然可以通过for循环来做,但是这种做法需要写比较多的代码,所以不是特别令人满意,毕竟大神已经做好轮子了,我们没有必要再去做轮子,对于数组转换成集合没有什么好说的,直接一个asList()方法就搞定了,对于集合转换成数组那就有点说头了,首先集合还有一个方法是无参的toArray(),不过这个方法的返回值是Object[],源码如下:
Object[] toArray();
但是我们还不能进行强制类型转换,毕竟可以强制类型转换单个对象,但是无法对数组进行转换,然后里面还有一个带参的toArray()方法,源码如下:
<T> T[] toArray(T[] a);
这个需要我们指定泛型,所以我们上面的代码就是Integer[] b = list.toArray(new Integer[0]);
,至于里面为什么是new Integer[0]
,你可以这样思考,我们只需要指明一下类型,但是定义数组的时候我们必须指定数组的长度,不过这个长度也没有什么用,只是为了符合数组定义要求而已,所以为了节约内存,我们就把长度设置成0,这样也指定了数组类型,并且也没有浪费内存空间