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。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java arrays.aslist()_Java中Arrays.asList()方法详解及实例相关推荐

  1. java获取文件大小_Java中获取文件大小的详解及实例代码

    Java 获取文件大小 今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法:另外一种是使用FileInputStream的available()方法, ...

  2. java中main是什么_Java中的main()方法详解

    在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...

  3. java configuration类_JAVA中的Configuration类详解

    本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...

  4. java js倒计时_Java实现倒计时的方法详解

    这篇文章主要介绍了Java编程倒计时实现的三个示例,三种实现方法,具有一定参考价值,需要的朋友可以了解下. 实现Java编程中倒计时的方法有许多,下面我们通过三个示例来简单了解下它的实现过程. 1.简 ...

  5. java 链表逆转_java 实现单链表逆转详解及实例代码

    java 实现单链表逆转详解 实例代码: class Node { Node next; String name; public Node(String name) { this.name = nam ...

  6. java io系统_java中的io系统详解

    Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...

  7. java transient 关键字_java中的transient关键字详解

    前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...

  8. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  9. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  10. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

最新文章

  1. python课程推荐-课程推荐:四天人工智能 python入门体验课
  2. Xcode7.2如何真机调试iOS 9.3的设备
  3. android wifi RSSI达到阈值自动断开
  4. while opening read connection: jdbc:mysql message from server: Host is not allowed to connect to t
  5. 运行keras出现 FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of type is deprecated解决办法
  6. 支付宝系统架构参考(架构图,最新揭秘)
  7. 2.Dockerfile
  8. 微信公众号如何上传文档附件_公众号添加Excel、PDF、PPT等附件教程
  9. google翻译出错什么原因?翻译英文页面时中文闪了下就显示“翻译出错请重试”
  10. Android 音视频采集与软编码总结
  11. 新手建站之【域名解析】⑦
  12. c++三种排序学习图文笔记(冒泡,插入,快速)
  13. 快排平均复杂度O(nlogn)证明
  14. 中文拼写检测(Chinese Spelling Checking)相关方法、评测任务、榜单
  15. php获取微信公众号用户信息头像,微信公众号的web页面如何获取微信用户名和头像?...
  16. 【网络安全科普】infra工程师 网络科普
  17. matlab 数组语法
  18. 3dmark压力测试 linux,3DMark新增压力测试 你的电脑可靠?得先过这关
  19. 在D-H参数法里为什么只用四个参数就能完全定义一个具有6自由度的坐标系
  20. 管理是科学还是艺术呢?-----行动力

热门文章

  1. 1067 Sort with Swap(0, i) (25 分)【难度: 中 / 知识点: 置换群】
  2. 最简单实现多线程的方法(Thread)
  3. MySQL中常见的单行函数(下)
  4. scroll-view如何自适应页面剩余高度
  5. MySQL事务的提交
  6. 卧槽,B站联名键盘!
  7. java基础思维导图
  8. struts实战--实现条件查询(利用dbutils)
  9. Android中关于APK文件的下载、安装和卸载
  10. SpringMVC的数据转换、格式化和数据校验