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

2023-01-18 18:48:33

一、数组怎么转化为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

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类结构

  • 作者:NICOTENDO
  • 原文链接:https://blog.csdn.net/weixin_42316272/article/details/112128543
    更新时间:2023-01-18 18:48:33