为什么Java里的Arrays.asList()返回的List不能使用add、remove方法?

OCTA-500:用于光学相干断层扫描血管造影研究的视网膜数据集|文献速递-基于生成模型的数据增强与疾病监测应用 数据集提供了丰富的图像和注释,包括两种模态(OCT/OCTA体积)、六种投影类型、四种文本标签(年龄/性别/眼别/疾病)以及七种分割标签(大血管/毛细血管/动脉/静脉/2D FAZ/3D FAZ/视网膜层)。我们介绍了新的 OCTA-500 数据集,该数据集包含来自 500 名受试者的 OCTA 成像,并提供了丰富的图像和标注集。(C) OCTA-500 切片的人工标注示例。图 4. OCTA-500 数据集中文本标签的统计直方图:(a) 性别,(b) 眼别,(c) 年龄,(d) 疾病。 阅读详情

我们从下面这段简单代码讲起,

public class MainFacade {
public static void main(String[] args) {
List list = Arrays.asList(1,2,3);
list.add(5);
System.out.print(list.toString());
}
}
运行时将会发现提示:UnsupportedOperationException的异常。

原因:通过源码我们发现,Arrays.asList()方法返回的ArrayList继承自AbstractList,同时实现了RandomAccess和Serializable接口。如下所示:

private static class ArrayList extends AbstractList
implements RandomAccess, java.io.Serializable
问题就出在这里。这个ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList,显然它是Arrays类自己定义的一个内部类!这个内部类没有实现add()、remove()方法,而是直接使用它的父类AbstractList的相应方法。

那我们接着看这个AbstractList,定义如下:

public abstract class AbstractList extends AbstractCollection implements List
我们再来看一下里面的set,add,remove方法,定义如下:

public void add(int index, E element) {
throw new UnsupportedOperationException();
}
public E remove(int index) {
throw new UnsupportedOperationException();
}
全都返回了这个异常。

总结:Arrays.asList()返回的ArrayList继承自AbstractList,它仅支持那些不会改变数组大小的操作,所以任何对底层数据结构的尺寸进行修改的方法都会出现异常,Arrays.asList()返回固定尺寸的List。

那么如何才能避免这个错误呢?

List list = new ArrayList<>(Arrays.asList(1,2,3));
thinking in java给的解释是:把Arrays.asList()的结果作为构造器的参数传递给任何Collection。

华为OD机试双机位C卷-几何平均值最大子数组(Py/Java/C/C++/Js/Go) 华为OD机试(机考)2026双机位C卷 【几何平均值最大子数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【几何平均值最大子数组】。 阅读详情

相关推荐

matlab tolx,Nelder-Mead算法matlab

Nelder-Mead算法适合变量数不是很多的方程求极值.原理:Nelder-Mead法是利用多面体来逐步逼近最佳点x*.设函数变量为n维,则在n维空间里多面体有(n+1)个顶点.设x1,x2,...,xn+1为多面体的顶点,且满足:f(x1)<=f(x2)<=...<=f(xn+1)Nelder-Mead法试着将多面体中最差的顶点xn+1(也就是函数的最大点)以新的最佳点替代,...

weixin_36485298的博客 1480

JDK8 Java 中遇到null 和为空的情况,使用Optional来解决。

对于业务代码,写的最多的估计就是if{}...else{}这xx玩意了,有时候又想能不能减少几行,但是这就可能在上线项目时,(不是我们的问题,是数据的问题)造成报出空指针异常这种xx情况。 但是在jdk8及以上版本,有了Optional,真的能够极大地避免这种情况的出现。 JDK 提供三...

chenlianke1276的博客 861

数电发票“乐企直连”服务平台建设方案

数字化电子发票“乐企直连”服务平台建设方案

m0_73174802的博客 4856

Collectors.groupingBy()进行分组时,分组值存在null值会报NPE(空指针)错误,使用时要注意

1、使用Collectors.groupingBy()进行分组时,分组值存在null值。解决办法:分组值为null时,默认值为空字符。

qq_43842093的博客 7409

Palantir 产品架构深度解析:从本体到AI的决策智能平台

本文深度解析了Palantir决策智能平台的核心产品架构。其核心在于构建企业级的“本体”(Ontology),即业务世界的“数字孪生”,通过数据、逻辑、操作三层抽象统一语义。平台以此为基础,通过Foundry构建数字孪生,并通过AIP(人工智能平台)实现本体增强生成(OAG),将AI深度融入业务,形成从数据感知、智能分析到行动执行的完整决策闭环。

ooo22的博客 736

告别Quartus II的漫长等待:用VSCode+iverilog+GTKWave搭建你的轻量级Verilog仿真环境(2024保姆级教程)

本文详细介绍了如何利用VSCode、iverilog和GTKWave构建高效的Verilog/SystemVerilog开发环境,替代传统的Quartus II和ModelSim工具。通过2024年最新的保姆级教程,帮助开发者实现秒级启动、低资源消耗的轻量级仿真环境,显著提升数字电路设计的开发效率和调试体验。

weixin_33690963的博客 562

Java8中使用Optional处理null对象

优雅判断null

yandefang的博客 820

PHM 2010数据集解读

PHM数据挑战赛是一项面向所有潜在与会者的竞赛。今年的挑战集中在使用测力仪、加速度计和声发射数据估计高速数控铣床刀具的RUL上。 博客对PHM 2010数据集的组成和信号进行了可视化。

cnjs1994的博客 7649

合计数值的问题

一开始总是报错Integer.parseInt java.lang.NumberFormatException: For input string:,查询是转换的问题,list拿到的是Object类型,多次转换计算数值,中间出错 public Result collectionStatistics(AccountRechargeRequest request) { LoggerUtils.infoData("/collectionStatistics", request);

weixin_54363295的博客 684

基于Simulink进行步进电机的重复控制仿真建模

重复控制概述目的:通过引入一个周期延迟环节来补偿系统的周期性误差,从而提高系统对周期性参考信号或扰动的跟踪性能。方法内部模型原理:在控制器中嵌入一个与周期性信号相关的模型(例如周期延迟环节),以实现对周期性误差的零稳态误差控制。滤波器设计:为了避免高频噪声放大,通常会在重复控制器中加入低通滤波器。优势对周期性信号具有良好的跟踪性能。不需要精确的数学模型即可实现高性能控制。挑战:需要合理设计重复控制器的参数以避免系统不稳定。

amy_mhd的博客 269

YOLO26涨点改进 | 独家创新,细节涨点改进篇 | CVPR 2025顶会 | YOLO26引入Mona即插即用模块, 含MoCAA和DyTMona二次创新改进,含多种创新改进高效发论文

本文给大家介绍Mona即插即用模块, 含MoCAA和DyTMona二次创新模块优化YOLO26模型。YOLO26引入 Mona通过引入多尺度视觉友好型卷积滤波器(如3x3、5x5、7x7深度卷积)和可伸缩归一化层来优化适配器设计,以更好地处理视觉信号并调节输入特征分布。YOLO26引入Mona即插即用模块, 含MoCAA和DyTMona二次创新改进,含多种创新改进高效发论文。适合目标检测、图像分割、图像分类等所有CV任务通用即插即用模块。

Ai缝合怪、助力小伙伴高效发论文 242

Java8集合filter过滤Integer数值为空问题解决方案

问题描述项目使用mysql,主键使用int自增,实体映射为Integer,而自增主键势必会大于127,那么问题来了 ,使用java8循环做parentId(类似菜单,多层级)判断时候怎么办呢?示例 //id 是传递的父id 用来过滤用 ,可以为空 List<Channel> channels = allchannel.stream() .filte

前往JAVA架构的路上 7048

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java中Arrays.asList()返回的list集合不能对add、remove方法进行操作

以下示例代码: public class Demo { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); list.remove(1); System.out.println(list.toSt...

WilhelmYang的博客 640

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Arrays.asList() 返回的list不能add,remove以及慎用java.util.Collections.copy()方法

今天在搜索数组和集合对象相互转化的问题时,发现了一些有趣的问题,在此和大家进行共勉~如有不合适的地方望更正。 1、如果只是想将数组转换成List,可以用JDK中的java.util.Arrays类: import java.util.Arrays;    String[] strArray = {"aaa", "bbb", "ccc"};    List strList = Array

西楚小羽的专栏 4931

Java中Arrays.asList()返回的List调用add()抛异常的原因

Java中Arrays.asList()返回的List调用add()抛异常的原因 通过Arrays.asList()可以方便的创建一个List,但是在调用这个List的add()或remove()方法时会抛异常,就像下边代码运行结果所示 public class ArraysTest { public static void main(String[] args) { Li...

weixin_44416026的博客 467

Java List和Array之间的转换

一.Array 转为List 1.实现方法 :java中数组转list使用Arrays.asList(T... a)方法。 public class Array2List { public static void main(String[] args){ List<String> listA=Arrays.asList("dog","cat","cow")...

厚积薄发 17万+

Arrays.asList() 返回的list不能add,remove

Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为ArrayList,只能转换为AbstractList 原因在于asList()方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的 下面是一段很简单的测试代码:

Altynai0514的专栏 2237

java中list set 和 array的相互转化

目录 Array转List和Set List转Array和Set SET转Array和List Array转List和Set String[] str = new String[]{"AA", "BB", "CC"}; List list = Arrays.asList(str); 注:Arrays.asList()方法返回的List不能add、remove对象,因为该方...

newchitu的博客 356

java使用Arrays asList需要注意了

Arrays.asList相信搞java的基本都用过,但有些坑不一定踩过 坑一 Arrays.asList返回的List不能进行add和remove操作,为什么呢,来看看源码就明白了 @SafeVarargs @SuppressWarnings("varargs") public static <T> List<T> asList(T... a) { return new ArrayList

aguda_king的博客 925

Arrays.asList的用法

Arrays.asList 返回数组而非List。 List的一个典型的特性就是其长度是可变的,我们可以很方便地对它进行插入和删除元素的操作,这是它与数组所存在的一个很大的区别,后者的长度是固定的,而且我们不能从数组中删除元素,只能修改元素的值。 利用Arrays.asList(array)返回一个List,然而这个返回的是只读的List不支持add和remove的操作。 JDK文档是这么说的: ...

weixin_42956047的博客 201

java list arrays_Java List和Array之间的转换

一.Array 转为List1.实现方法 :java中数组转list使用Arrays.asList(T... a)方法。public class Array2List {public static void main(String[] args){List listA=Arrays.asList("dog","cat","cow");String[] strs={"dog","cat","cow"...

weixin_27727467的博客 96

Exception in thread “main“ java.lang.UnsupportedOperationException

java踩坑记录

qq_38911076的博客 1092

java list to set_Java中array、List、Set互相转换

数组转ListString[] staffs = new String[]{"A", "B", "C"};List staffsList = Arrays.asList(staffs);//注意: Arrays.asList() 返回一个受指定数组决定的固定大小的列表。所以不能做 add 、 remove 等操作,否则会报错。List staffsList = Arrays.asList(staf...

weixin_31157123的博客 304

java asarray_java 数组转list asList用法

https://www.cnblogs.com/zheyangsan/p/6910476.htmljava中数组转list使用Arrays.asList(T... a)方法。示例:public class App {public static void main(String[] args) {List stringA = Arrays.asList("hello", "world","A");S...

weixin_29369363的博客 221

java 数组转list asList用法

https://www.cnblogs.com/zheyangsan/p/6910476.html java中数组转list使用Arrays.asList(T... a)方法。 示例: public class App { public static void main(String[] args) { List<String> stringA ...

weixin_34358365的博客 236

Java Arrays、ArrayList相关坑

大家在使用ArrayList和Arrays有遇到哪些坑?

bearboy80的专栏 426
上一篇: MYBATIS-PLUS性能分析插件—PERFORMANCEINTERCEPTOR
下一篇: dubbo泛化调用导致zk中同一个消费者节点数递增
yonhu123java
博客等级 码龄14年 6粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值