一、数组怎么转化为List
![e235ed589632f66619553457339dd448.png](https://i-blog.csdnimg.cn/blog_migrate/136c1a565327dc8dcfeb7bc805718a18.jpeg)
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
为啥和想想的不一样?
![ff6b84983aaa00bed66a1f99414acb33.png](https://i-blog.csdnimg.cn/blog_migrate/adfd8b2b4ebbd3581372a02e8b18aba5.jpeg)
来来换一种写法
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了
![8c05e7b5e2754d93542b19e68286f4f6.png](https://i-blog.csdnimg.cn/blog_migrate/81380ae743589ead238de398f1e25647.jpeg)
asList方法源码
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);
结果就是抛出了下面的异常;
![b2dc9288845eba9c215bc1cc85430fb1.png](https://i-blog.csdnimg.cn/blog_migrate/6e37b960769be480fc457945444abf4b.jpeg)
由上面 Arrays.asList方法的源码知道,它的返回是ArrayList,此处的 ArrayList是Arrays的静态内部私有类实现,不是我们常用的那个ArrayList,这里的ArrayList根本没实现add和remove方法,所以才抛出异常了
这里的ArrayList继承自AbstractList,类的结构如下图
![bc1d113f45bf83b4e793cda3e6ddd2ba.png](https://i-blog.csdnimg.cn/blog_migrate/919c5f83b17a59485a51ffff65d7d63d.jpeg)
ArrayList类结构