调用Set.addAll()方法时抛UnsupportedOperationException异常

Anomalies,Factors,andMultiFactorModels 转 Anomalies, Factors, and Multi-Factor Models 作者:石川,量信投资创始合伙人,清华大学学士、硕士,麻省理工学院博士;精通各种概率模型和统计方法,擅长不确定性随机系统的建模及优化。知乎专栏:https://zhuanlan.zhihu.com/mitcshi。未经授权,严禁转载。 摘要:本文解释了异象、因子以及多因子模型的区别和联系;梳理了从异象到因子再... 阅读详情

执行代码:

Set<String>couponIdSet=couponInfoToCacheService.getCouponIdAll();
if(catIdSet!=null&&catIdSet.size()>0){
Set<String>couponIdCatSet=couponInfoToCacheService.getCouponIdByCatId(catIdSet);
if(couponIdCatSet.size()>0){
couponIdSet.addAll(couponIdCatSet);
}
}

报错如下:
这里写图片描述

原本认为是couponIdCatSet为空的原因,后来加了一个空判断,仍旧报UnsupportedOperationException异常。

好神奇的异常啊。。。
couponIdSet是getCouponIdAll返回的Map.KeySet()集合
而Set是支持addAll()方法的。

百度了一下,发现不是AddAll方法的问题,而是Map的KeySet()方法返回的Set集合不允许增加操作。(这个坑啊!!)

下面是摘自API帮助文档的说明
keySet 
public Set keySet()返回此映射中所包含的键的 set 视图。该集合受映射的支持,所以映射的变化也反映在该集合中,反之亦然。该集合支持元素的移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作,从该映射中移除相应的映射关系。它不支持 add 或 addAll 操作。 

也就是说,由Map.keySet()返回的集合,仅支持删除元素,并不支持再在其中插入元素。

OpenStack ussuri 私有云平台搭建企业级实战 openstack是一个云操作系统,这个操作系统控制着数据中心中的计算,存储和网络资源。所有这些资源的管理都是通过API来来实现的,并且管理资源都有相应的认证机制。在openstack中有一个叫做dashboard的仪表盘,这个仪表盘通过web界面可以管理这些在DC中的资源。除了能提供IaaS功能外,你还可以使用orchestration,错误管理和服务管理等服务来确保应用的高可用性。 阅读详情

相关推荐

[TC3XX]AURIX TC3XX系列之启动流程

本文介绍了微控制器(MCU)启动过程中固件(Firmware)和启动软件(SSW)的工作原理。MCU上电复位后,硬件完成初始化,BootROM中的固件开始执行,进行参数加载、模式选择等操作。SSW作为第一个执行的软件,负责时钟配置、安全检查、多核管理及启动模式选择,最终跳转至用户代码。启动模式包括内部Flash启动、Bootloader模式(通过ASC或CAN接口)和备用启动模式(ABM),具体由复位类型、引脚配置和UCB设置决定。文章特别指出英飞凌TC3xx系列芯片中固件不可修改,只能通过配置参数定制启动

redparrot2008的博客 1423

调用Set.add(All)出现java.lang.UnsupportedOperationException异常原因以及解决方法

一个初学者很常见的错误,因为困扰了我有一些时间,所以就写在这里备忘并希望帮助其他初学java的人。首先看一段代码:    Map&lt;String, Integer&gt; map = new HashMap&lt;&gt;();     map.put("a", 0);     map.put("b", 1);     map.put("c", 2);     Set&lt;Strin...

qq_37549266的博客 5146

【MDC开发者实战】多传感器融合算法在自动驾驶中的配置与优化

本文详细介绍了华为MDC平台在自动驾驶中多传感器融合算法的配置与优化实践。通过前融合与后融合技术,结合摄像头、激光雷达和毫米波雷达的数据,提升感知精度与可靠性。文章还分享了ARXML配置、标定技巧、算法调优及性能优化等实战经验,帮助开发者高效实现自动驾驶系统的传感器融合。

weixin_29214199的博客 515

set.add() 报ava.lang.UnsupportedOperationException

show you the code: public class T { public static void main(String[] args) { HashMap<String, Object> map = new HashMap<>(); map.put("c",20); map.put("d",40); Set<String> strings = map.keySet();

AIfred 549

英飞凌TLF35584 SBC实战:手把手教你配置WDG看门狗与ERR监控(基于AUTOSAR架构)

本文详细介绍了基于AUTOSAR架构的英飞凌TLF35584 SBC芯片WDG看门狗与ERR监控功能的配置方法。通过硬件平台搭建、寄存器级配置、AUTOSAR模块集成及诊断策略优化,帮助开发者快速掌握关键配置技巧,提升嵌入式系统的安全性和可靠性。

weixin_30256901的博客 477

手把手教你用AD9834 DDS模块DIY一个可调信号源(附AD原理图/PCB/程序)

本文详细介绍了如何使用AD9834 DDS模块DIY一个高精度可调信号源,涵盖硬件搭建、原理图解读、PCB优化和程序烧录等关键步骤。通过STM32控制实现0-10MHz频率范围输出,特别适合电子设计与射频实验,提供完整的AD原理图、PCB设计和程序代码参考。

weixin_31854867的博客 409

集合addAll操作产生的Caused by: java.lang.UnsupportedOperationException: null问题探究

对于AbstractSet实现了Set()接口,为什么类中及子类中可以不实现addAll()及add()方法呢,这是因为这两个方法都在AbstractCollection类中实现了,AbstractCollection类实现的Collection接口是Set接口的父类。EmptySet是Collections的内部类,继承了抽象类AbstractSet,但是没有重写add()、addAll()方法,我们接着向上找它的父类AbstractSet中的addAll()方法。初始化的Set也是一样的,

zhulj625的博客 1187

【AI Agent】Hermes Agent解析

Hermes Agent:一个具备持久化学习能力的开源AI Agent框架 核心特点: 突破传统Agent的"无状态困境",通过记忆系统(SQLite+FTS5全文检索)实现跨会话经验积累 支持200+模型自由切换,11种模型家族和15+平台接入 五层架构设计(入口层、编排层、推理层、工具执行层、存储层)实现平台无关性 47+内置工具和动态技能沉淀机制,支持从任务执行中自动提炼可复用Skill 独特的四层记忆体系(会话/每日/长期/向量索引)和辩证式用户建模 与传统Agent对比: 具备自我进化能力,通过A

sysu_lluozh 967

关于Set的java.lang.UnsupportedOperationException

Map的keySet()方法返回的Set对象是不支持addAll()方法的,否则就会产生UnsupportedOperationException 如何解决: Map map =new HashMap(); map.put("key", "value"); Map map1 =new HashMap(); map1.put("key", "value"); Set set=new HashS...

念牧童的专栏 1426

芯片工程师-必须掌握的linux操作-第一讲

一个从材料专业,转行芯片验证初级工程师,自己也是从0基础开始学习入门,更知道0基础的人应该怎么去学习。 现在工作三个多月了,特地花时间给大家写这篇文章。希望能关注、支持下。 为什么芯片验证工程师必须要学习linux命令? 答: ① 芯片工程师主要的职责,就是与IC设计工程师和系统工程师密切合作,开发验证平台,能够根据项目要求产生测试计划,产生代码及功能覆盖率,撰写验证报告。 ②简单点说,主要工作内容,是编写代码去验证设计的对不对。 那么问题来了,编写代码,在什么环境呢,我现在告诉你,都是在linux系统中进

小白蒋-材料转行芯片验证 4843

单细胞数据分析(三):单细胞聚类分析

本文介绍了单细胞聚类分析的基本概念及其在单细胞RNA测序(scRNA-seq)数据中的应用。单细胞聚类分析通过将具有相似基因表达模式的细胞分组到不同的簇中,帮助识别细胞类型、状态和功能。文章详细展示了使用R语言中的Seurat包进行单细胞数据聚类分析的步骤,包括数据加载、降维、聚类和结果可视化。通过FindNeighbors和FindClusters函数,文章展示了如何基于降维数据进行细胞聚类,并选择合适的分辨率值。

专注生信领域 1915

【Java】关于java.lang.UnsupportedOperationException异常错误的处理

今天在使用,set集合的add方法时,抛出了一个异常,java.lang.UnsupportedOperationException下面进行错误的复盘,代码如下:public static void main(String[] args) { Set<Object> set = PropertiesUtil.getKeyValue("xzqhall"); set.ad

KingWang@whu的博客 2万+

用 SAP-ABAP-1 把 ABAP 代码理解这件事交给 AI:从遗留代码到 ABAP Cloud 的开发加速器

SAP-ABAP-1是SAP推出的首个专用ABAP基础模型,专注于理解和解释ABAP代码,帮助开发者更快迁移和维护遗留系统。它强调ABAP Cloud合规编码实践,通过SAP AI Foundation提供访问,主要能力包括代码解释、业务语义理解和框架约束分析。相比通用模型,它能更好处理ABAP特有的版本差异、权限控制和扩展边界等问题。该模型可集成到多种开发环境中,支持文件化开发体验,并能与SAP Joule等工具协同工作,为ABAP团队提供智能辅助。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3827

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HashSet与HashMap转换-UnsupportedOperationException

一、错误描述 在开发中使用Set时报了java.lang.UnsupportedOperationException import java.util.Set; public class Set_test { public static void main(String [] args){ Set&amp;amp;amp;lt;String&amp;amp;amp;gt; names = new HashSet&amp;amp;amp;lt;..

qq_21067307的博客 1773

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数组转集合增删操作时候的UnsupportedOperationException

数组转集合 我们可以调用Arrays.asList将数组转换为集合 但是再进行增删操作就会报错UnsupportedOperationException。 这是因为Arrays.asList得到的List其实是一个“假的”List,这个list是没有对remove和add进行重写的,所以就抛出了这个异常。 我们可以自己创建一个List然后调用addAll,用“真”集合添加"假"集合的元素然后进

Encode_myself的专栏 404

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

集合add方法报java.lang.UnsupportedOperationException: null错误

// 通过map.keySet获得Set集合,该集合是没有add,addAll等方法实现,只有remove等方法实现 Set<String> certSet = certMap.keySet() certSet .add(i); // 报错java.lang.UnsupportedOperationException: null 解决方法 Set<String> certSet = new HashSet<>(); certSet.addAll(certMap.key

gltncx11的博客 1425

java.lang.UnsupportedOperationException

今天在运行程序的时候发现如下错误:java.lang.UnsupportedOperationException 下面是原异常代码截图(红色方框部分):   通过查询资料得知:原来 map.keySet() 返回的set集合中,不支持新增(set.add() 或者 set.addAll())操作,但删除、清理操作是可以的。   所以上面的错误代码的解释为: 虽然 orderList...

小白一个 1157

Java List合并操作全解析:从addAll到Stream与多线程安全实践

在Java集合框架中,List作为最常用的数据结构之一,其合并操作是数据处理的基础环节。从底层原理来看,List合并本质上是元素的批量迁移与容器管理,涉及数组扩容、内存拷贝等核心机制。这一基础操作的技术价值在于,它直接影响了数据聚合、缓存同步和批量任务处理的效率与正确性。在实际应用场景中,开发者不仅需要关注简单的元素追加,还需应对数据去重、并发安全以及不可变集合等复杂需求。例如,通过Stream API可以优雅地实现合并与去重的链式操作,而面对多线程环境时,则需选用CopyOnWriteArrayList或

weixin_34275734的博客 372

Arrays.asList(T... a)替代方法,异常:Exception in thread “main“ java.lang.UnsupportedOperationException

众所周知 Arrays.asList(T… a): 该方法返回定长的 List,不支持 add 和 remove 操作 该方法返回的 List 与传入数组是映射关系(视图):set/get 操作直接作用于数组;直接修改数组,list 也会改变 替代方案: //直接声明 List<String> list = new ArrayList<>(Arrays.asList("a", "b","c")); //简介声明 String[] arr = {"a", "b", "c"}; Lis

weixin_43829047的博客 387

Java初始化List及异常java.lang.UnsupportedOperationException

后对其进行添加,修改等操作时会抛出异常,这是因为生成的。是否支持修改操作,可以转为可修改类型再操作。类型默认不支持请求的操作。

D_A_I_H_A_O的博客 401

Map.keySet()相关的一个小问题

今天项目中遇到一个小问题,类似的代码如下:   import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; /** * * @author liyebing * @version $Id...

liyebing 615

线性表、栈、队列和优先队列

ArrayList(本质上还是数组)、Vector(多线程、效率低,与ArrayList相似)、LinkedList(链表)、Stack(栈,继承Vector)、PriorityQueue(优先级队列)ArrayList用动态创建的数组存储元素,如果元素个数超过数组的容量,就创建一个更大的数组,并且将当前数组中的所有元素都赋值到新的数组中。父类的方法,子类要全部继承,但是父类的有些方法,子类可能没有→父类的方法子类进行重写→抛出异常。默认情况下,元素以自然顺序排序 最小的元素对应最高的优先级。

mynameispy的博客 934

Java集合框架:List与Set的核心区别与应用场景

Java集合框架是数据处理的基础组件,其核心在于数据结构的选择与实现原理。List接口基于动态数组或链表实现,维护元素插入顺序,适合需要索引访问和允许重复的场景;Set接口则通过哈希表或树结构确保元素唯一性,提供O(1)级别的查找性能。理解这两种集合的底层实现差异对性能优化至关重要,例如ArrayList的随机访问优势与HashSet的快速去重特性。在实际工程中,集合选择直接影响系统效率,如使用HashSet优化百万级数据查询,或通过ArrayList维护操作日志顺序。掌握集合框架的线程安全方案(如Copy

weixin_30568591的博客 400

Java 数组转 List 的 3 种方式,哪种性能最牛?

作者:大脑补丁 本文链接:https://blog.csdn.net/x541211190/article/details/79597236 版权声明:本文为博主原创文章,遵循 CC 4...

weixin_38754349的博客 122

java 连接两个arraylist_Java中的两个ArrayList

1. java.util.ArrayListArrayList是List接口的可变数组的实现。实现了所有可选列表操纵,并容许包含 null 在内的所有元素。除了实现 List 接口外,此类还供给一些办法来操纵内部用来存储列表的数组的大小。每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它老是至少便是列表的大小。跟着向ArrayList中络续添加元素,其容量也主动增长...

weixin_42299645的博客 1929
上一篇: Java之DateFormatUtils格式化时间Bug
下一篇: Java JVM管理
HY_Chan
博客等级 码龄10年 54粉丝 60原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值