使用工具类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。一段有意思的代码如下:
Java代码 

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的数组
Java代码 

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包,通过反射访问数组的这个类,编译时候生成的。所以要改为:
Java代码 

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

List list = Arrays.asList(data);

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

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

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

此外,假如如下代码:
Java代码 

//枚举,声明一个星期

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的用法相关推荐

  1. js 如何将java list集合转换成var类型数组_零基础参加郑州Java培训 一定要注意Arrays.asList的用法...

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

  2. java中的asList_Java Arrays.AsList原理及用法实例

    java.util.Arrays的asList方法可以方便的将数组转化为集合,我们平时开发在初始化ArrayList时使用的比较多,可以简化代码,但这个静态方法asList()有几个坑需要注意: 一. ...

  3. Java数组转集合之Arrays.asList()用法

    Arrays.asList()用法 使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合. 而一开始asList的设计时用于打印数组而设计 ...

  4. Arrays.aslist用法及陷阱

    原文出处http://blog.csdn.net/chenleixing/article/details/43775127 大家都知道这个方法是将数组转成list,是JDK中java.util包中Ar ...

  5. Arrays.asList方法总结

    作用 : Arrays.asList() 将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是 ...

  6. Java Arrays.asList()方法详解

    本文是对Arrays.asList()方法从源码角度进行分析,解析使用中的一些困惑. 首先看Arrays.asList()的源码 public static <T> List<T&g ...

  7. java数组转list(Arrays .asList)

    习惯性的错误代码: Integer[] intArr = {1,2,3}; List<Integer> lst = Arrays .asList(intArr); lst.add(4); ...

  8. Java 集合 List Arrays.asList

    2019独角兽企业重金招聘Python工程师标准>>> 参考链接:阿里巴巴Java开发手册终极版v1.3.0 [强制]使用工具类 Arrays.asList()把数组转换成集合时,不 ...

  9. java 是否含有日文_Java踩坑记系列之Arrays.asList

    阅读本文大概需要6分钟 1. java.util.Arrays.asList()可以方便的把一个数组转成ArrayList集合来使用,但是如果对集合使用增加或删除元素的操作将会报错,如下: List ...

  10. java集合类的一些总结——Arrays.asList和Guava操作集合

    使用背景 总结一下最近项目中使用到集合的两个点,一个是Arrays.asList这个方法使用的坑,另一个是利用Guava的Sets工具类去求并交集. 使用总结 Arrays.asList的坑 先上结论 ...

最新文章

  1. java编程思想 入门_java编程思想学习(基础)
  2. AJAX技术其实就是多年前我就使用过的XMLHTTP
  3. 程序员取名:用大数据分析一下宝宝取名时最容易重复的名字
  4. GCF(1)---How to modify PICS according to FGI bits UE reported
  5. 财务金融类网页及app界面设计模板
  6. [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
  7. 7-8 评委打分 (5 分)
  8. Wordpress 5.2 beta 2 发布,支持 Emoji 12
  9. 收集常用汉字6725个
  10. Typora使用教程
  11. 服务器邮件删除了怎么恢复,Exchange邮件误删除不用急 DPM轻松恢复
  12. 笔记本损耗60 计算机提示,笔记本电池损耗60%多怎么处理!
  13. a eraser eraser还是an_是a eraser还是an eraser
  14. 稀疏数组练习demo 数据结构和算法
  15. 发现一个国外用来做参与式及知识迁移的网络课件 messenger-education
  16. 从浪潮之巅到千里之行,区块链能否实现赢家通吃?
  17. 服务器每秒钟执行命令数量是什么_日常学习笔记.md
  18. vasp运行报错:问题:POSMAP internalerror: symmetry equivalent atom not found
  19. 《王者荣耀》等“爆款”游戏是如何诞生的?| 马晓轶青腾大学演讲
  20. ARP断网攻击和防御

热门文章

  1. asp.net优化方案
  2. pre-commit钩子,代码质量检查
  3. 谈谈YOLOv2做了哪些改进
  4. spring-eureka 源码解读----为什么一个服务最多两分钟被其他服务感知
  5. 解决“在上下文中找不到 owin.Environment 项”
  6. swing简单的打字游戏源码
  7. When should we write our own copy constructor?
  8. Ananagrams (多种stl)
  9. 【CSS】 CSS基础知识 属性和选择
  10. Xcode 快速开发 代码块