工具类Arrays.asList()方法把数组转换成集合

时间:2022-04-18 09:06:59

工具类Arrays.asList()方法把数组转换成集合

不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException()

问题分析:

1、测试

工具类Arrays.asList()方法把数组转换成集合

被注释的三行可以分别解开注释,运行后确实出现了上述所说的异常

2、看源码

工具类Arrays.asList()方法把数组转换成集合

似乎没有问题、往下看

工具类Arrays.asList()方法把数组转换成集合

然而实际上我们点进到ArrayList发现,其实ArrayList并不是我们平时用的ArrayList。而是Arrays里面的一个内部类。而且这个内部类没有add,clear,remove方法,所以抛出的异常其实来自于AbstractList。

工具类Arrays.asList()方法把数组转换成集合

点进去就会发现抛出异常的地方,clear底层也会调用到remove所以也会抛出异常。

总结:

1、Arrays.asList()不要乱用,底层其实还是数组。

2、如果使用了Arrays.asList()的话,最好不要使用其集合的操作方法。

3、List list = new ArrayList<>(Arrays.asList("a", "b", "c"))可以在外面这样包一层真正的ArrayList。

工具类Arrays.asList()方法把数组转换成集合的更多相关文章

  1. Java基础知识强化之集合框架笔记33:Arrays工具类中asList&lpar;&rpar;方法的使用

    1. Arrays工具类中asList()方法的使用 public static <T> List<T> asList(T... a): 把数组转成集合 注意事项: 虽然可以把 ...

  2. Java8集合框架——集合工具类Arrays内部方法浅析

    java.util.Arrays 备注:本文只对 Java8 中的 java.util.Arrays 中提供的基本功能进行大致介绍,并没有对其具体的实现原理进行深入的探讨和分析.详情可自己深入观摩源码 ...

  3. Arrays类——Arrays&period;asList&lpar;&rpar;方法使用

    java.util类 Arrays java.lang.Object——java.util.Arrays public class Arrays extends Object 此类包含用来操作数组(比 ...

  4. Arrays类--Arrays&period;asList&lpar;&rpar;方法使用

    java.util类 Arrays java.lang.Object——java.util.Arrays public class Arrays extends Object 此类包含用来操作数组(比 ...

  5. 工具类BitMap 把网络URL图片转换成BitMap

    代码不复杂,直接把完整代码贴上. 这次是用到很旧的HttpURLConnection,那为什麽会用这个,因为我本来想转回okhttp的,可实在没时间转,项目就已经做下去了,结果转不回来. packag ...

  6. laravel将数组转换成集合

    $myArray = collect($this -> menuPermissionTypes); //$this -> menuPermissionTypes是数组! dd($myArr ...

  7. Arrays工具类的aslist()方法的使用

    数组转换成集合: 数组转换成集合不能增加或减少元素,但是可以用集合思想操作数组,也就是说可以使用其他集合中的办法 String[] arr = {"a", "b&quot ...

  8. 为什么阿里规约手册要求谨慎使用Arrays&period;asList方法

    前言 在开发中,有时候会碰到把多个参数,或者说把数组转成List的需求,通常我们会使用 Arrays.asList()方法.但是该方法在使用的过程中,稍有不慎就会出现严重的异常.有如下代码: @Tes ...

  9. 数组转换list集合问题

    1问题的起因: 项目总要使用一个方法把数组转换成list集合,百度说有这个方法Arrays.asList可以实现 2结果报错 抛出java.lang.UnsupportedOperationExcep ...

随机推荐

  1. Hibernate(1)——数据访问层的架构模式

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 数据库的概念.逻辑.数据模型概念 应用程序的分层体系结构发展 MVC设计模式与四层结构的对应关系 持久层的设 ...

  2. openssl 升级

    openssl version -a rpm -q --changelog  openssl | grep CVE bash -version #!/bin/bash if [[ $EUID -ne ...

  3. 通过oauth 认证 新浪微博 开发过程中遇到的问题

    1 Android之NetworkOnMainThreadException异常 http://blog.csdn.net/mad1989/article/details/25964495 ,从Hon ...

  4. 隐藏NavigationBar时的一个坑

    http://www.jianshu.com/p/efb960fed457 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear: ...

  5. iOS沙盒机制介绍,Block 的介绍

    一.iOS沙盒机制介绍 (转载) 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访 ...

  6. 深入学习JavaScript(一)

    1.全局变量与局部变量 全局变量:全局变量就是在函数的外部定义的一个在其他地方都可以调用的变量 局部变量:局部变量是相对于全局变量而言的,局部变量指的是在一个区域内存在这个变量 全局变量的创建原理是在 ...

  7. C&num;&lowbar;socket拆包&lowbar;封包&lowbar;模拟乱序包

    拆包一直是个硬伤呀,MLGB的,服务端各种乱数据,果断整理下 拆包思路:设计一个网络协议,一般都会分包,一个包就相当于一个逻辑上的命令. .如果我们用udp协议,省事的多,一次会收到一个完整的包,但U ...

  8. KVM 通过virsh console连入虚拟机

    新安装一台虚拟机后,是无法通过virsh console 命令连入虚拟机中的,这时我们需要开启虚拟机的console功能. 一.添加ttyS0的许可,允许root登陆 [root@localhost ...

  9. 前端安全系列之二:如何防止CSRF攻击

    原文:https://my.oschina.net/meituantech/blog/2243958 背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题 ...

  10. 洛谷P3434 &lbrack;POI2006&rsqb;KRA-The Disks &lbrack;模拟&rsqb;

    题目传送门 KRA 题目描述 For his birthday present little Johnny has received from his parents a new plaything ...