Arrays.asList之后不要调用修改操作

简介: `Arrays.asList()`返回的列表是固定大小的,底层基于原数组,不支持add/remove操作,否则抛出UnsupportedOperationException;且修改原数组会同步影响列表元素,因二者共享同一引用。

String[] str = new String[] { "you", "wu" };
List list = Arrays.asList(str);

因为asList返回的实际是一个Arrays内部类,并没有实现集合的修改方法(add/remove/clear)// 当操作修改方法时,会报UnsupportedOperationException。
第一种情况:list.add("yangguanbao"); 运行时异常。
第二种情况:str[0] = "gujin"; 那么 list.get(0)也会随之修改。[涉及栈堆指针操作,修改数组的数据,导致同样引用该数据的list值被改变]

image.png

相关文章
|
20小时前
|
开发工具 git 开发者
git常用指令
本文介绍了常用Git命令:添加文件、拉取更新、提交修改、推送代码、强制推送、重置状态、变基操作与撤销提交,帮助开发者高效管理版本控制,规范协作流程。(238字)
|
20小时前
|
关系型数据库 MySQL
|
20小时前
|
Java 数据库连接 Nacos
Nacos
因数据库连接失败导致服务无法启动,日志显示为JDBC错误。需定位对应conf配置文件,将其中的数据库连接信息修改为公司实际配置即可解决问题。
|
20小时前
|
Java 测试技术 Maven
Maven——构建二方包
二方包指对外提供的JAR包,如tj-api或微服务client。通过GAV(GroupId、ArtifactId、Version)提供给调用方使用。开发测试环境Version多为固定快照版(如1.0.0-SNAPSHOT),生产环境按版本递增(如1.0.1、1.1.3),重大更新时升级主版本号(如2.0.0)。
|
20小时前
|
Java Maven
Maven
当Maven依赖拉取失败时,需提前配置公司私服及阿里云镜像,并在IDEA中正确设置。若某jar包下载失败,检查本地仓库对应目录下是否有含"update"的文件,若有则删除该jar所在文件夹(非全部),再刷新Maven即可解决。
|
20小时前
|
Java
JDK
JDK配置需注意使用与公司统一的版本,避免因版本不一致导致兼容性问题,确保开发环境稳定,减少不必要的错误和调试成本。
|
17小时前
|
Java
SpringBoot--整合Logback,滚动记录+多文件
SpringBoot--整合Logback,滚动记录+多文件
|
18小时前
|
XML Java 数据格式
SpringBoot--无标题
被@Configuration标注的类会被Spring IOC容器识别为配置类,作用等同于applicationContext.xml配置文件。通过注解方式注册Bean,结合AnnotationConfigApplicationContext可启动容器并管理Bean。示例代码展示了配置类及Bean的加载过程,输出结果显示配置类与组件均被成功注册到容器中。
|
18小时前
SpringBoot--@Inherited
@Inherited用于注解,使子类继承父类中标记该注解的元数据;但仅适用于类继承,接口继承和实现均不继承注解。
|
18小时前
|
Java 数据库连接 Spring
MyBatis--常见配置
MyBatis配置优先级:方法参数 > resource/url属性 > properties元素内属性。支持多环境配置,通过environments指定默认环境和数据源,结合事务管理器(JDBC/MANAGED)管理事务,常用于多数据源场景,与Spring集成时由Spring接管事务管理。