Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法
Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,此处测试代码如下,这里使用add方法:
- 1 public class main {
- 2 public static void main(String[] args) {
- 3 int[] num = {1,2,3};
- 4 List list = Arrays.asList(num);
- 5 list.add(4);
- 6 }
- 7 }
在idea运行会提示UnsupportedOperationException,追踪源码进行分析
1.首先Arrays.asList()得到的列表是Arrays类中的内部类ArrayList,源码如下
- 1 public static <T> List<T> asList(T... a) {
- 2 return new ArrayList<>(a);
- 3 }
- 4
- 5 /**
- 6 * @serial include
- 7 */
- 8 private static class ArrayList<E> extends AbstractList<E>
- 9 implements RandomAccess, java.io.Serializable
- 10 {
- 11 //ArrayList的方法
......- 12 }
在上述源码中,第2行在调用asList方法会返回一个新的ArrayList对象,这个对象类型就是第8行的代码,Arrays类中的内部类ArrayList
2.这个内部类ArrayList继承了AbstractList这个类,并实现了如下图所示方法
可以发现并没有实现add方法。
3.因此在调用add方法时,根据继承规则子类没有找到add方法,便会去父类寻找,即在AbstractList这个类中找到add方法,如下图所示
再追踪add(size(), e)
发现其直接抛出UnsupportedOperationException异常。
Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法的更多相关文章
- 工具类Arrays.asList()方法把数组转换成集合
工具类Arrays.asList()方法把数组转换成集合 不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException() 问 ...
- 字符串集合或字符串数组转换成json数组
字符串可以是List<String>类型的字符串集合,也可以是String[]类型的字符串数组,二者转换成JSON数组的方式没有什么不同.下面代码注意关键的部分即可(画红线部分). 1. ...
- JavaScript 系列--JavaScript一些奇淫技巧的实现方法(二)数字格式化 1234567890转1,234,567,890;argruments 对象(类数组)转换成数组
一.前言 之前写了一篇文章:JavaScript 系列--JavaScript一些奇淫技巧的实现方法(一)简短的sleep函数,获取时间戳 https://www.mwcxs.top/page/746 ...
- C/C++中数组转换成指针的情况
数组转换成指针:在大多数用到数组的表达式中,数组自动转换成指向数组首元素的指针.比如: int ia[10]; int *p = ia; //ia转换成指向数组首元素的指针 以下情况上述转换不会发生: ...
- 如何将PHP对象数组转换成普通数组
/** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...
- 笔试算法题(31):将有序数组转换成BST表示 & 线段树的应用
出题:要求将一个有序整数数组转换成最小深度的Binary Search Tree表示: 分析:由于需要是最小深度,所以BST应保持平衡,左右节点数大致相当,并且BST中当前根节点大于所有其左子树中的元 ...
- JS 将有父子关系的数组转换成树形结构数据
将类似如下数据转换成树形的数据 [{ id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1', ...
- JS 将伪数组转换成数组
在 JS 中,伪数组 是非常常见的,它也叫 类数组.伪数组可能会给 JS 初学者带来一点困扰. 本文将详细讲解 什么是伪数组,以及分别在 ES5 和 ES6 中将伪数组转换成真正的数组 . 什么是伪数 ...
- C#字节数组转换成字符串
C#字节数组转换成字符串 如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了.为了进行这样的转换,我们不得不借助另一个类:System.Text.Enc ...
- 100怎么变成100.00 || undefined在数字环境下是:NaN || null在数字环境下是0 || 数组的toString()方法把每个元素变成字符串,拼在一起以逗号隔开 || 空数组转换成字符串后是什么?
100怎么变成100.00?
随机推荐
- Unity UGUI的所有组件的介绍及使用
Unity UGUI的所有组件的介绍及使用 本文将介绍Unity UGUI中的各个组件,包括它们的具体介绍.用途 1. Text(文本) 介绍:Text组件用于在UI界面上显示文本内容. 用途:常用于 ...
- P7561[JOISC 2021 Day2] 道路の建設案 (Road Construction) 题解
P7561[JOISC 2021 Day2] 道路の建設案 (Road Construction) 题解 题目描述 JOI 国是一个 \(x\times y\) 的二维平面,王国里有 \(n\) 个城 ...
- Python 引用问题 - ImportError: attempted relative import with no known parent package
问题描述 近日在尝试引用其他文件的代码时,遇到了错误: ImportError: attempted relative import with no known parent package. 问题大 ...
- 即构微信小程序直播组件是什么?有哪些功能?哪些小程序类目可以使用?
即构直播助手是微信官方认证的微信小程序插件,为开发者提供便捷.强大的微信小程序音视频直播服务. 即构直播助手除了包含微信小程序下的音视频推拉流能力,还支持iOS.Android.Windows.Web ...
- MapReduce实现TopN的效果
1.背景 最近在学习Hadoop的MapReduce,此处记录一下如何实现 TopN 的效果,以及在MapReduce中如何实现 自定义分组. 2.需求 我们有一份数据,数据中存在如下3个字段,订单编 ...
- 利用Python爬取免费代理IP
# 2019/9/8 # 思路: 1.找到一个免费的ip代理网站(如:西刺代理) # # 2.爬取ip(常规爬取requests+BeautifulSoup) # # 3.验证ip有效性(携带爬取到的 ...
- 图技术在 LLM 下的应用:知识图谱驱动的大语言模型 Llama Index
LLM 如火如荼地发展了大半年,各类大模型和相关框架也逐步成型,可被大家应用到业务实际中.在这个过程中,我们可能会遇到一类问题是:现有的哪些数据,如何更好地与 LLM 对接上.像是大家都在用的知识图谱 ...
- TypeScript: 类型别名
类型别名 在 TYPESCRIPT 中,类型别名可以使用 TYPE 关键字来定义.类型别名可以方便地定义一个类型,并为其起一个易于理解的名称,以便在其他地方引用该类型时使用. 示例 type MySt ...
- PHP插件
- 基于Linux的三种防火墙(IPtables、Firewall、UFW)
学而不思则罔,思而不学则殆. 导航 IPtables Firewall UFW 对比总结 IPtables部分 1.IPtables 四表五链. 四表:filter.nat.raw.mangle. 五 ...