您的位置 首页 java

java Arrays.asList()你真的了解吗?

一、数组怎么转化为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=1
val=[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=3
val=100
val=200
val=300  

为什么我们将int换成Integer就ok了

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);  

结果就是抛出了下面的异常;

由上面 Arrays.asList方法的源码知道,它的返回是ArrayList,此处的 ArrayList是Arrays的静态内部私有类实现,不是我们常用的那个ArrayList,这里的ArrayList根本没实现add和remove方法,所以才抛出异常了

这里的ArrayList继承自AbstractList,类的结构如下图

ArrayList<E>类结构

文章来源:智云一二三科技

文章标题:java Arrays.asList()你真的了解吗?

文章地址:https://www.zhihuclub.com/200514.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图