一、数组怎么转化为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了
![8c05e7b5e2754d93542b19e68286f4f6.png](http://img.555519.xyz/uploads/20230118/57f72bd27d506949102de0f38ed5ad3e.jpg)
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](http://img.555519.xyz/uploads/20230118/001c113a2f6456f12504b974945ef77f.jpg)
由上面 Arrays.asList方法的源码知道,它的返回是ArrayList,此处的 ArrayList是Arrays的静态内部私有类实现,不是我们常用的那个ArrayList,这里的ArrayList根本没实现add和remove方法,所以才抛出异常了
这里的ArrayList继承自AbstractList,类的结构如下图
![bc1d113f45bf83b4e793cda3e6ddd2ba.png](http://img.555519.xyz/uploads/20230118/243d529c0e9ef84b06ddcaef90d1eeb9.jpg)
ArrayList类结构