aslist方法_java Arrays.asList()你真的了解吗?

一、数组怎么转化为List

e235ed589632f66619553457339dd448.png

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

来来换一种写法

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

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

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

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

bc1d113f45bf83b4e793cda3e6ddd2ba.png

ArrayList类结构

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值