一、数组怎么转化为List
Arrays.asList()方法呀,这还不简单。
int[] val= {100,200,300};List list = Arrays.asList(val);System.out.println("size="+list.size());for(Object s: list){ System.out.println("val="+s); }
输出结果
size=1val=[I@2503dbd3
为啥和想想的不一样?
来来换一种写法
Integer[] val= {100,200,300};List list = Arrays.asList(val);System.out.println("size="+list.size());for(Object s: list){ System.out.println("val="+s); }
这回正常了
size=3val=100val=200val=300
为什么我们将int换成Integer就ok了
asList(T... a)方法就收的是一泛型,泛型要求包容的是对象类型,而基本数据类型在Java中不属于对象哦,所以我们使用包装类型Integer就可以了
二、为什么Arrays.asList()返回的list,为什么不能添加新元素
Integer[] val= {100,200,300};List list = Arrays.asList(val);System.out.println("size="+list.size());list.add(888);
结果就是抛出了下面的异常;
由上面 Arrays.asList方法的源码知道,它的返回是ArrayList,此处的 ArrayList是Arrays的静态内部私有类实现,不是我们常用的那个ArrayList,这里的ArrayList根本没实现add和remove方法,所以才抛出异常了
这里的ArrayList继承自AbstractList,类的结构如下图