Java字符串数组转ArrayList集合抛UnsupportedOperationException异常的解决办法_caicai1171523597的博客-程序员秘密

想把一个字符串先切割为字符串数组,然后将数组转为ArrayList,但是在后面调用ArrayList的add方法时,却抛异常了。
代码如下:

public static void main(String[] args) {
        String str = "A,B,C,D,E";
        String arr[] = str.split(",");
        List<String> arrList = Arrays.asList(arr);
        arrList.add("F");
        System.out.println("arrList:"+StringUtils.join(arrList,","));
    }

异常信息:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)

调用ArrayList的remove方法同样也会抛异常,原因如下:

Arrays.asList() 方法返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList。
Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList。
而remove、add等方法在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重写了这些方法,但是Arrays的内部类ArrayList没有重写,所以会抛出异常。

解决办法:

重新创建一个ArrayList来装结果集,将先前转换后的list放到新创建的ArrayList里

public static void main(String[] args) {
        String str = "A,B,C,D,E";
        String arr[] = str.split(",");
        List<String> arrList = Arrays.asList(arr);
        /*重新创建一个动态list来装结果集*/
        List resultList = new ArrayList(arrList);
        resultList.add("F");
        System.out.println("arrList:"+StringUtils.join(resultList,","));
    }

输出结果:

arrList:A,B,C,D,E,F

实际处理中,将字符串数组转换成ArrayList的方法有多种,这里只是记录一下这个异常的解决办法。

原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/caicai1171523597/article/details/86643663

智能推荐

计算机图形学开发框架,计算机图形学-基于3d图形开发技术_weixin_39954682的博客-程序员秘密

第一张 游戏模型1.底层渲染图形API包括Direct3D(windows)和Opengl(跨平台框架),这些API定义了对GPU的操作接口,Direct3d仅支持三角形网格,Opengl支持同面的任意凸多边形。2.网格的细分和简化操作3.存储网格定点数据:一般采用索引三角形的形式存储,即从顶点阵列或顶点缓冲区(顶点阵列是opengl的叫法,顶点缓冲区是direct3d的叫法)读取完全不重复的顶点...

【Linux开发】Linux V4L2驱动架构解析与开发导引_linux下v4l2驱动框架详解_Zhang_P_Y的博客-程序员秘密

Linux V4L2驱动架构解析与开发导引Andrew按:众所周知,linux中可以采用灵活的多层次的驱动架构来对接口进行统一与抽象,最低层次的驱动总是直接面向硬件的,而最高层次的驱动在linux中被划分为“面向字符设备、面向块设备、面向网络接口”三大类来进行处理,前两类驱动在文件系统中形成类似文件的“虚拟文件”,又称为“节点node”,这些节点拥有不同的名称代表不同的设备,在目录/dev

58同城 反爬虫机制及处理_58 爬虫 访问频繁_qq_45612184的博客-程序员秘密

58同城 反爬虫机制及处理字体反爬机制问题:字体反爬也就是自定义字体反爬通过调用自定义的ttf文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容!必须通过程序去处理才能达到采集成本。网页显示与源代码出现不一致的情况这里58同城将数字(比较敏感的元素,包括价格,面积大小)用自定义的ttf文件进行了渲染(该文件base64进行加密,包含数字到相应的unicode字符之间的映射信息),从而产生类似于乱码的情况。Base64

Ubuntu 18.04.5 LTS安装zabbix-agent5.0报错依赖: libcurl3 (>= 7.16.2) 但是它将不会被安装-完美解决_玩电脑的辣条哥的博客-程序员秘密

环景:Ubuntu 18.04.5 LTS问题描述:Ubuntu 18.04.5 LTS安装zabbix-agent5.0到这步命令:sudo apt-get install -y zabbix-agent正在读取软件包列表… 完成正在分析软件包的依赖关系树正在读取状态信息… 完成有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件包尚未被创建或是它们已被从新到(Incoming)目录移出。下列信息

windows无法打开添加打印机_打印机共享常见问题汇总_weixin_39746382的博客-程序员秘密

双机打印机的共享问题 1. 工作站的网上邻居无法浏览到提供共享打印服务的主机。 2. 工作站上无法浏览网上邻居 3. 工作站搜索不到共享打印机 4. 原来可以共享打印,今天所有工作站突然不能打印,如果添加打印机的话,找不到那台主机上的打印机. 访问那台主机需要密码, 点击已经安装的打印机,显示无权访问。 解决Win XP打印共享问题 在进行共享...

身份鉴别_sparename的博客-程序员秘密

身份鉴别1、身份鉴别基础2、基于实体所知的鉴别3、基于实体所有的鉴别4、基于实体特征的鉴别5、 kerberos体系6、认证、授权和计费1、身份鉴别基础◆理解标识与鉴别的区别、鉴别类型、鉴别方式等◆基本概念◆了解对身份鉴别系统的主要要求身份鉴别的概念◆标识◆实体身份的一种计算机表达◆每个实体与计算机内部的一个身份表达绑定◆信息系统在执行操作时,首先要求用户标识自己的身份,并提供证明自己身份的依据,不同的系统使用不同的方式表示实体的身份,同一个实体可以有多个不同的身份◆标识示例◆用户ID

随便推点

java注解与反射01_注解_注解选择01_BLUcoding的博客-程序员秘密

java注解与反射注解内置注解:@Override定义在java.lang.Override中,声明该方法重写了超类中的方法@Deprecated定义在java.lang.Deprecated中,可修饰方法、属性、类。表示不鼓励,不推荐使用该元素,通常认为它很危险或已过时,存在更好的选择。@SuppressWarnings定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息该注解需要添加参数:@SuppressWarnings("all")@S

Oracle 用户授权、权限收回、角色创建 编辑 删除_程序员云笔记的博客-程序员秘密

用户授权--查询数据库中的所有用户select * from dba_users; --锁住用户alter user username account lock;--给用户解锁alter user username account unlock; --创建用户create user username identified by password;--授权用户创建表grant...

Creational Patterns Part 1/5: Factory Pattern_weixin_30823227的博客-程序员秘密

Creational Patterns Part 1/5: Factory Pattern目录Creational Patterns Part 15 Factory Pattern目录DefinitionUML Class DiagramImplementationDefinitionFactory Pattern是Java中...

rocketmq 消息删除_RocketMQ常用命令_托卡马克之冠m~~的博客-程序员秘密

1.1.控制台使用RocketMQ提供有控制台及一系列控制台命令,用于管理员对主题,集群,broker等信息的管理;登录控制台首先进入RocketMQ工程,进入/RocketMQ/bin在该目录下有个mqadmin脚本查看帮助在mqadmin下可以查看有哪些命令shmqadmin查看具体命令的使用shmqadminhelp命令名称例如,查看updateTopic的使用shm...

windows10下编译 fast rcnn_星星hxx的博客-程序员秘密

error :Unknown layer type: ROIPooling;no module named cv2

推荐文章

热门文章

相关标签