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()把数组转换成集合时,不能使用其修改集合相关的方法的更多相关文章

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

    工具类Arrays.asList()方法把数组转换成集合 不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException() 问 ...

  2. 字符串集合或字符串数组转换成json数组

    字符串可以是List<String>类型的字符串集合,也可以是String[]类型的字符串数组,二者转换成JSON数组的方式没有什么不同.下面代码注意关键的部分即可(画红线部分). 1. ...

  3. JavaScript 系列--JavaScript一些奇淫技巧的实现方法(二)数字格式化 1234567890转1,234,567,890;argruments 对象(类数组)转换成数组

    一.前言 之前写了一篇文章:JavaScript 系列--JavaScript一些奇淫技巧的实现方法(一)简短的sleep函数,获取时间戳 https://www.mwcxs.top/page/746 ...

  4. C/C++中数组转换成指针的情况

    数组转换成指针:在大多数用到数组的表达式中,数组自动转换成指向数组首元素的指针.比如: int ia[10]; int *p = ia; //ia转换成指向数组首元素的指针 以下情况上述转换不会发生: ...

  5. 如何将PHP对象数组转换成普通数组

    /** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...

  6. 笔试算法题(31):将有序数组转换成BST表示 & 线段树的应用

    出题:要求将一个有序整数数组转换成最小深度的Binary Search Tree表示: 分析:由于需要是最小深度,所以BST应保持平衡,左右节点数大致相当,并且BST中当前根节点大于所有其左子树中的元 ...

  7. JS 将有父子关系的数组转换成树形结构数据

    将类似如下数据转换成树形的数据 [{ id: 1, name: '1', }, { id: 2, name: '1-1', parentId: 1 }, { id: 3, name: '1-1-1', ...

  8. JS 将伪数组转换成数组

    在 JS 中,伪数组 是非常常见的,它也叫 类数组.伪数组可能会给 JS 初学者带来一点困扰. 本文将详细讲解 什么是伪数组,以及分别在 ES5 和 ES6 中将伪数组转换成真正的数组 . 什么是伪数 ...

  9. C#字节数组转换成字符串

    C#字节数组转换成字符串 如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了.为了进行这样的转换,我们不得不借助另一个类:System.Text.Enc ...

  10. 100怎么变成100.00 || undefined在数字环境下是:NaN || null在数字环境下是0 || 数组的toString()方法把每个元素变成字符串,拼在一起以逗号隔开 || 空数组转换成字符串后是什么?

    100怎么变成100.00?

随机推荐

  1. 前端:Uncaught TypeError: Cannot set property 'value' of null;

    1.在写JS代码中的绑定事件时(将JS与HTML标签分开时),发现会有如下错误提示: Uncaught TypeError: Cannot set property 'onclick' of null ...

  2. Java中AQS的原理与实现

    目录 1:什么是AQS? 2:AQS都有那些用途? 3:我们如何使用AQS 4:AQS的实现原理 5:对AQS的设计与实现的一些思考 1:什么是AQS ​ 随着计算机的算力越来越强大,各种各样的并行编 ...

  3. 春节无法线下社交聚会,来线上“一起X”共享体验

    引语: 共享体验或许是全真互联网时代最显著的标志. 被疫情深刻改变的一年里,人们的社交关系和社交活动正在发生巨大的改变. 一方面,从线下转线上,我们能通过互联网连接更多的人,参与各种形式的社交活动,将 ...

  4. 【爬虫案例】用Python爬取知乎热榜数据!

    目录 一.爬取目标 二.编写爬虫代码 三.同步讲解视频 3.1 代码演示视频 3.2 详细讲解视频 四.获取完整源码 一.爬取目标 您好,我是@马哥python说,一名10年程序猿. 本次爬取的目标是 ...

  5. 普通用户启动 supervisor 报 HTTP 错误(strace)

    公司的开发对生产环境都有普通用户 www 的权限,采用堡垒机登录到生产环境的机器. 默认 supervisor 使用 root 用户启动,开发没有权限直接修改配置和操作 supervisor 管理的进 ...

  6. ASP.NET Core - 日志记录系统(一)

    一.日志记录 日志记录是什么?简单而言,就是通过一些方式记录应用程序运行中的某一时刻的状态,保留应用程序当时的信息.这对于我们进行应用程序的分析.审计以及维护有很大的作用. 作为程序员,我们恐怕谁也不 ...

  7. go install 和 go get的区别

    go install 和 go get 都是 Go 语言中的命令行工具,用于处理依赖关系和安装包.它们的主要区别在于功能和使用场景. go install: 功能:go install 命令用于编译并 ...

  8. 2021-8-5 Microsoft文档学习笔记(C#)

    以下列表概述了类可以包含的成员类型. 常量:与类相关联的常量值 字段:与类关联的变量 方法:类可执行的操作 属性:与读取和写入类的已命名属性相关联的操作 索引器:与将类实例编入索引(像处理数组一样)相 ...

  9. WebStorm: 配置React中useState自动补齐功能

    配置如下 模板文本如下所示 const [$STATE$, $SET_STATE$] = useState($INITAL_STATE$) 编辑变量 SET_STATE文本如下所示 concat(&q ...

  10. spring-mvc系列:详解@RequestMapping注解(value、method、params、header等)

    目录 一.@RequestMapping注解的功能 二.@RequestMapping注解的位置 三.@RequestMapping注解的value属性 四.@RequestMapping注解的met ...