java.lang.UnsupportedOperationException 异常分析

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

今天将一个数组转换成 List 然后进行 remove 操作时却抛出 java.lang.UnsupportedOperationException 异常。


String pattern = " ^, v, m, n-music-name, $ ";
String[] patternSplit = Utils.getStringTrimSplit(pattern, ",");// 去除模式中的^和$标识
List<String> natureList = Arrays.asList(patternSplit);
if ("^".equals(natureList.get(0))) {natureList.remove(0); // throw java.lang.UnsupportedOperationException
}
if ("$".equals(natureList.get(natureList.size() - 1))) {natureList.remove(natureList.size() - 1); // throw java.lang.UnsupportedOperationException
}String[] natureArray = natureList.toArray(new String[natureList.size()]);
System.out.println(natureArray.length);

看了下源码才发现使用 Arrays.asList(arr) 转换的 List 并不能进行 add 和 remove 操作。
Arrays.asList(arr) 返回的类型是 Aarrays$ArrayList 并不是 ArrayList,
Aarrays$ArrayList 和 ArrayList 都继承 AbstractList,但是 AbstractList 中的 add 方法和 remove 方法都是直接抛出 UnsupportedOperationException,并没有直接实现。
ArrayList 重写了 add 方法和 remove 方法,能够进行对应的添加和删除操作,Aarrays$ArrayList 却没有去重写,所以此时调用 add 方法和 remove 方法会抛出 UnsupportedOperationException。

解决办法


// old
List<String> natureList = Arrays.asList(patternSplit);
// new 
List<String> natureList = new ArrayList<>(Arrays.asList(patternSplit));

源码

Arrays.asList(arr) 返回 Aarrays$ArrayList , Aarrays$ArrayList 继承 AbstractList


ArrayList 继承 AbstractList

AbstractList 中的 add 方法和 remove 方法都直接抛出 UnsupportedOperationException

ArrayList 重写 add 方法和 remove 方法

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『并发包入坑指北』之阻塞队列

前言 较长一段时间以来我都发现不少开发者对 jdk 中的 J.U.C&#xff08;java.util.concurrent&#xff09;也就是 Java 并发包的使用甚少&#xff0c;更别谈对它的理解了&#xff1b;但这却也是我们进阶的必备关卡。 之前或多或少也分享过相关内容&#xff0c;但都不成体系&am…

个人理财有哪些基本原理和方法?

现金为王&#xff1a;不超额消费&#xff0c;不使用信用卡&#xff0c;不负债&#xff08;房贷除外&#xff09; 信贷消费已经成为主流的今天&#xff0c;强调使用现金似乎与时代格格不入。而对于信贷消费的依赖&#xff0c;常常来自于下面几个看起来十分有力的观点&#xff…

2019年3月4日 701. Insert into a Binary Search Tree

比较基础的二叉树排序树插入&#xff0c;写了个递归。# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution(object):def insertIntoBST…

2020-3-18

题目一&#xff1a; JavaScript 字符串转换为数组 其一&#xff1a; let str"apple"; console.log([...str]);运行结果 其二&#xff08;使用split()&#xff09;&#xff1a; let str"apple"; console.log(str.split());注1&#xff1a;如果将参数省略…

思维导图,流程图模板整合

思维导图与流程图在工作中都是经常使用的&#xff0c;出现频率较高的&#xff0c;有些不会绘制的或者是刚接触这一类的图表形式的都会选择使用模板来完成工作&#xff0c;但是很多朋友却不知道模板在&#xff0c;今天要给大家分享的是几款孩子走精美的思维导图&#xff0c;流程…

解决 List 执行 remove 时报异常 java.lang.UnsupportedOperationException

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、情况描述 报错如题&#xff1a; java.lang.UnsupportedOperationException: nullat java.util.Collections$UnmodifiableCollectio…

2020-3-19

题目一&#xff1a; js split() 分割字符串生成数组 let str"I am a student"; let arrstr.split(" "); for(let i0;i<arr.length;i){console.log(arr[i]); }分析&#xff1a;这里利用字符串的空格来分割字符串生成数组。split()方法的参数设置为"…

上班族怎么创业?白领一族创业当老板!

班族怎么创业?很多上班族无法面对每天平淡的生活&#xff0c;于是想要拥有一份属于自己的事业。上班族创业有哪些好的项目呢?结合自已的兴趣爱好&#xff0c;找到适合的项目&#xff0c;上班的同时也能当老板。 上班族怎么创业?创业项目1、开投资额小的特色店 尝试开店创业的…

一文告诉你 Event Loop 是什么?

Event Loop 也叫做“事件循环”&#xff0c;它其实与 JavaScript 的运行机制有关。 JS初始设计 JavaScript 在设计之初便是单线程&#xff0c;程序运行时&#xff0c;只有一个线程存在&#xff0c;在特定的时候只能有特定的代码被执行。这和 JavaScript 的用途有关&#xff0c;…

Spring Boot -Shiro配置多Realm

2019独角兽企业重金招聘Python工程师标准>>> 核心类简介 xxxToken&#xff1a;用户凭证 xxxFilter&#xff1a;生产token&#xff0c;设置登录成功&#xff0c;登录失败处理方法&#xff0c;判断是否登录连接等 xxxRealm&#xff1a;依据配置的支持Token来认证用户信…

idea工具debug断点红色变成灰色

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 没事别瞎点&#xff0c;禁用了断点当然不走了 转自&#xff1a;https://blog.csdn.net/anlve512/article/details/54583469

2020-3-20前端题目

题目一&#xff1a; 判断checked复选框是否有被选中 <!DOCTYPE html> <html> <head> <meta charset" utf-8"> <script> window.onload () > {let odivdocument.getElementById("ant");let ckdocument.getElementById(&…

上班族如何当老板 五大模式任你选

中国教育在线讯 辞职创业&#xff0c;还是维持现在稳定的工作?这个是很多上班族都纠结过的问题&#xff0c;一边是稳定的工作和收入&#xff0c;一边是创业当老板的诱惑&#xff0c;真是很难选择。 其实&#xff0c;如果安排合理是可以“鱼与熊掌”兼得的&#xff0c;沈阳市古…

利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序

利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序 前面两篇文章已经介绍过 tap/tun 的原理和配置工具。这篇文章通过一个编程示例来深入了解 tap/tun 的程序结构。 01 准备工作 首先通过 modinfo tun 查看系统内核是否支持 tap/tun 设备驱动。 Copy[rootby ~]# modinfo tun f…

2020-3-21

题目一&#xff1a; JavaScript 获取月份最后一天日期 月份最后一天日期可能是不同的&#xff0c;比如有的是30、有的是31还有的是28。 <!DOCTYPE html><html> <head> <meta charset" utf-8"> <script type"text/javascript"&…

正方形矩阵求对角线之和

nint(input()) a[] for i in range(n): #循环体里面加入input&#xff08;&#xff09;可以实现一共执行n次input&#xff08;&#xff09; lst[int(x) for x in input().split()]a.append(lst) #用列表解析&#xff0c;两层列表代表行列&#xff0c;很巧妙的方法 w0 bl…

解决: Unable to connect to zookeeper server within timeout: 5000

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一个项目启动不起来了&#xff0c;报错如题&#xff1a; Caused by: org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to c…

闲钱请看如何处理

买一点基金定投。基金是专家帮你理财。基金的起始资金最低单笔是1000元,定投200元起投 买基金到银行或者基金公司都行。银行能代理很多基金公司的业务&#xff0c;具体开户找银行理财专柜办理。现在有些证券公司也有代理基金买卖的。在银行开通网上银行后网上购买一般收费上有优…

JAVA 数组元素的反转

package Code411;/*数组元素的反转本来[1,2,3,4]反转后[4,3,2,1]1.对称位置的元素交换2.对称位子需要两个索引3.int temp a&#xff1b;ab;btemp;4.什么时候停止交换&#xff08;1&#xff09;minmax (2)min>max */public class CodeArrayReverse { public static void m…

requests模块相关用法

requests模块 -1. 什么是requests模块- python原生的一个基于网络请求的模块&#xff0c;模拟浏览器发起请求。 -2. 为什么使用requests模块-1. 自动处理url编码-2. 自动处理post请求参数-3. 简化cookie和代理的操作-3. requests模块如何被使用安装&#xff1a; pip install re…