作为编程界的老大哥,Java一直是想要加入互联网行业的人的首选。为了能够更快更好地入行,很多零基础学员选择参加郑州Java培训班,跟着老师的脚步由浅入深的学习专业技术。今天千锋郑州小编就给大家分享使用Arrays.asList的注意事项。

Java是一个面向对象编程语言,在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合,Arrays.asList是工具类Arrays的一个内部静态类,asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组。

需要注意的是,使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportOperationException异常。接下来我们通过一段代码来分析一下零基础学Java时比较常见的Arrays.asList错误用法:




java的数组怎么转成map java将数组转换成集合_数组


该代码最终的输出结果是1,原因是在Arrays.asList中,该方法接受一个变长参数,一般可看做数组参数,但是因为int[]本身就是一个类型,所以data变量作为参数传递时,编译器认为只传了一个变量,这个变量的类型是int数组,所以size为1。基本类型是不能作为泛型的参数,按道理应该使用包装类型,但这里缺没有报错,因为数组是可以泛型化的,所以转换后在list中就有一个类型为int的数组。


java的数组怎么转成map java将数组转换成集合_java的数组怎么转成map_02


输出的为元素类型:class [I

前后是否相等:true

因为jvm不可能输出array类型,array类型属于java.lang.reflect包,通过反射访问数组的这个类,编译时候生成的。所以要改为:

Integer[] data = {1,2,3,4,5};

List list = Arrays.asList(data);

System.out.println("列表中的元素数量是:" + list.size());

输出结果:列表中的元素数量是:5

说明编译器对Integer[] 处理不一样。Integer是可变长参数。传入过程中asList()方法实际是将Integer数组里的元素进行存储。

通过以上的例子我们可以看到,常见的Arrays.asList用法错误主要有三种:1)将基本类型数组作为asList的参数;2)将数组作为asList参数后,修改数组或List;3)数组转换为集合后,进行增删元素。