博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java——Arrays.asList()方法
阅读量:5253 次
发布时间:2019-06-14

本文共 1746 字,大约阅读时间需要 5 分钟。

Arrays.asList() 是将数组作为列表

问题来源于:

public class Test {    public static void main(String[] args) {        int[] a = {1,2,3,4};        List list = Arrays.asList(a);        System.out.println(list.size());  //1    }}

期望的输出是 list里面也有4个元素,也就是size为4,然而结果是1.

原因如下:

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

/**     * Returns a fixed-size list backed by the specified array.  (Changes to     * the returned list "write through" to the array.)  This method acts     * as bridge between array-based and collection-based APIs, in     * combination with {
@link Collection#toArray}. The returned list is * serializable and implements {
@link RandomAccess}. * *

This method also provides a convenient way to create a fixed-size * list initialized to contain several elements: *

     *     List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");     * 
* * @param a the array by which the list will be backed * @return a list view of the specified array */ @SafeVarargs public static
List
asList(T... a) { return new ArrayList<>(a); }

返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直写”到数组。)此方法同 Collection.toArray 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的.

所以,如果是创建多个列表,在传参数时候,最好使用Arrays.copyOf(a)方法,不然,对列表的更改就相当于对数组的更改。

public class Test {    public static void main(String[] args) {        Integer[] a = {1,2,3,4};        List list = Arrays.asList(a);        System.out.println(list.size());  //4    }}

最后提醒,如果Integer[]数组没有赋值的话,默认是null,而不是像int[]数组默认是0。

 

转载于:https://www.cnblogs.com/tina-smile/p/5056174.html

你可能感兴趣的文章
php学习笔记
查看>>
普通求素数和线性筛素数
查看>>
PHP截取中英文混合字符
查看>>
【洛谷P1816 忠诚】线段树
查看>>
电子眼抓拍大解密
查看>>
poj 1331 Multiply
查看>>
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
P1107 最大整数
查看>>
多进程与多线程的区别
查看>>
Ubuntu(虚拟机)下安装Qt5.5.1
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
java 常用命令
查看>>
CodeForces Round #545 Div.2
查看>>
卷积中的参数
查看>>
51nod1076 (边双连通)
查看>>
Item 9: Avoid Conversion Operators in Your APIs(Effective C#)
查看>>
深入浅出JavaScript(2)—ECMAScript
查看>>
STEP2——《数据分析:企业的贤内助》重点摘要笔记(六)——数据描述
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>