Arrays.asList的用法
使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportOperationException异常说明:asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组。String[] str = new String[]{"1","2"};List list = Arrays.asList(str);第一种情况:list.add("x");//运行时异常第二种情况:str[0] = "unv";//那么list.get(0)也随着修改。此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。 除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。一段有意思的代码如下:
public static void main(String[] args) {
int[] data = {1,2,3,4,5};
List list = Arrays.asList(data);
System.out.println("列表中的元素数量是:" + list.size());
}
注意这里输出的数量是1,原因是,在Arrays.asList中,该方法接受一个变长参数,一般可看做数组参数,但是因为int[] 本身就是一个类型,所以data变量作为参数传递时,编译器认为只传了一个变量,这个变量的类型是int数组,所以size为1。基本类型是不能作为泛型的参数,按道理应该使用包装类型,但这里缺没有报错,因为数组是可以泛型化的,所以转换后在list中就有一个类型为int的数组
int[] data = {1,2,3,4,5};
List list = Arrays.asList(data);
System.out.println("元素类型:" + list.get(0).getClass());
System.out.println("前后是否相等:"+data.equals(list.get(0)));
可以看到,
输出的为元素类型: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数组里的元素进行存储。
此外,假如如下代码:
//枚举,声明一个星期
enum Week{Sun,Mon, Tue, Wed,Thu,Fri,Sat}
public static void main(String[] args) {
//工作日
Week[] workDays = {Week.Mon, Week.Tue, Week.Wed,Week.Thu,Week.Fri};
//转换为列表
List list = Arrays.asList(workDays);
//增加周六也为工作日
list.add(Week.Sat);
注意这里用add会出错,因为是arrays.aslist中,看代码可以看到这里返回的ArrayList不是原来的传统意义上的java.util.arraylist了,而是自己工具类的一个静态私有内部类,并没有提供add方法,要自己实现,所以这里是出错了,因此,除非确信array.aslist后长度不会增加,否则谨慎使用:List abc=Arrays.asList("a","b","c"),因为这样的长度是无法再add的了.
Arrays.asList的用法相关推荐
- js 如何将java list集合转换成var类型数组_零基础参加郑州Java培训 一定要注意Arrays.asList的用法...
作为编程界的老大哥,Java一直是想要加入互联网行业的人的首选.为了能够更快更好地入行,很多零基础学员选择参加郑州Java培训班,跟着老师的脚步由浅入深的学习专业技术.今天千锋郑州小编就给大家分享使用 ...
- java中的asList_Java Arrays.AsList原理及用法实例
java.util.Arrays的asList方法可以方便的将数组转化为集合,我们平时开发在初始化ArrayList时使用的比较多,可以简化代码,但这个静态方法asList()有几个坑需要注意: 一. ...
- Java数组转集合之Arrays.asList()用法
Arrays.asList()用法 使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合. 而一开始asList的设计时用于打印数组而设计 ...
- Arrays.aslist用法及陷阱
原文出处http://blog.csdn.net/chenleixing/article/details/43775127 大家都知道这个方法是将数组转成list,是JDK中java.util包中Ar ...
- Arrays.asList方法总结
作用 : Arrays.asList() 将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是 ...
- Java Arrays.asList()方法详解
本文是对Arrays.asList()方法从源码角度进行分析,解析使用中的一些困惑. 首先看Arrays.asList()的源码 public static <T> List<T&g ...
- java数组转list(Arrays .asList)
习惯性的错误代码: Integer[] intArr = {1,2,3}; List<Integer> lst = Arrays .asList(intArr); lst.add(4); ...
- Java 集合 List Arrays.asList
2019独角兽企业重金招聘Python工程师标准>>> 参考链接:阿里巴巴Java开发手册终极版v1.3.0 [强制]使用工具类 Arrays.asList()把数组转换成集合时,不 ...
- java 是否含有日文_Java踩坑记系列之Arrays.asList
阅读本文大概需要6分钟 1. java.util.Arrays.asList()可以方便的把一个数组转成ArrayList集合来使用,但是如果对集合使用增加或删除元素的操作将会报错,如下: List ...
- java集合类的一些总结——Arrays.asList和Guava操作集合
使用背景 总结一下最近项目中使用到集合的两个点,一个是Arrays.asList这个方法使用的坑,另一个是利用Guava的Sets工具类去求并交集. 使用总结 Arrays.asList的坑 先上结论 ...
最新文章
- java编程思想 入门_java编程思想学习(基础)
- AJAX技术其实就是多年前我就使用过的XMLHTTP
- 程序员取名:用大数据分析一下宝宝取名时最容易重复的名字
- GCF(1)---How to modify PICS according to FGI bits UE reported
- 财务金融类网页及app界面设计模板
- [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
- 7-8 评委打分 (5 分)
- Wordpress 5.2 beta 2 发布,支持 Emoji 12
- 收集常用汉字6725个
- Typora使用教程
- 服务器邮件删除了怎么恢复,Exchange邮件误删除不用急 DPM轻松恢复
- 笔记本损耗60 计算机提示,笔记本电池损耗60%多怎么处理!
- a eraser eraser还是an_是a eraser还是an eraser
- 稀疏数组练习demo 数据结构和算法
- 发现一个国外用来做参与式及知识迁移的网络课件 messenger-education
- 从浪潮之巅到千里之行,区块链能否实现赢家通吃?
- 服务器每秒钟执行命令数量是什么_日常学习笔记.md
- vasp运行报错:问题:POSMAP internalerror: symmetry equivalent atom not found
- 《王者荣耀》等“爆款”游戏是如何诞生的?| 马晓轶青腾大学演讲
- ARP断网攻击和防御