当前位置: 首页 > article >正文

异常:UnsupportedOperationException: null

异常信息

Not Implemented java.lang.UnsupportedOperationException: null at java.base/java.util.AbstractList.add(AbstractList.java:153) at java.base/java.util.AbstractList.add(AbstractList.java:111) at java.base/java.util.AbstractCollection.addAll(AbstractCollection.java:352)

原因分析:

  • 当传入的列表由Arrays.asList()List.of()生成时,这些列表不可变,调用add()addAll()会抛出异常。

  • 通过创建新的ArrayList实例,复制原列表内容,确保后续操作在可变列表上进行,彻底解决问题。

此修改保证了无论调用方传入何种类型的列表,方法内部始终使用可变列表,从而避免UnsupportedOperationException

解决方案

在 Java 中,若需要创建可变的列表,可以使用以下方法:


1. 直接使用 new ArrayList<>() 或 new LinkedList<>()

这是最常见且推荐的方式,可以动态增删元素:

List<String> mutableList = new ArrayList<>();
mutableList.add("A");
mutableList.add("B");
mutableList.remove("A");

2. 基于 List.of() 创建可变副本

如果希望基于不可变列表初始化数据,再转为可变列表:

List<String> immutableList = List.of("A", "B", "C");
List<String> mutableList = new ArrayList<>(immutableList); // 转为可变
mutableList.add("D"); // 允许操作

3. 使用 Arrays.asList()(但有限制)

Arrays.asList() 返回的列表允许修改元素值,但不允许增删元素(会抛出异常):

List<String> semiMutableList = Arrays.asList("A", "B");
semiMutableList.set(0, "X"); // ✅ 允许修改
semiMutableList.add("C");     // ❌ 抛出 UnsupportedOperationException

若需要完全可变,可配合 new ArrayList<>()

List<String> mutableList = new ArrayList<>(Arrays.asList("A", "B"));
mutableList.add("C"); // ✅ 允许增删

4. Java 8 Stream 生成可变列表

通过 Collectors.toList() 生成的列表是可变的:

List<String> mutableList = Stream.of("A", "B", "C").collect(Collectors.toList());
mutableList.add("D"); // ✅ 允许操作

关键区别总结

方法是否可变能否增删元素初始化方式
List.of()不可变直接初始化元素
Arrays.asList()半可变基于数组初始化
new ArrayList<>()可变空列表或基于其他集合初始化
Collectors.toList()可变通过 Stream 生成

最佳实践

  • 需要动态增删元素时:优先使用 new ArrayList<>() 或 new LinkedList<>()

  • 需要基于不可变列表初始化:用 new ArrayList<>(List.of(...)) 转为可变。

  • 避免直接操作 Arrays.asList() 的结果:除非明确知道只需修改元素值。


示例场景

假设需要从数据库查询数据后动态修改列表:

// 假设从数据库查询到一组不可变数据
List<String> dbResults = List.of("User1", "User2", "User3");// 转为可变列表以便后续操作
List<String> editableList = new ArrayList<>(dbResults);// 动态增删
editableList.add("User4");
editableList.remove("User1");

通过上述方法,可以灵活处理需要动态修改的列表,避免 UnsupportedOperationException 异常。

相关文章:

异常:UnsupportedOperationException: null

异常信息 Not Implemented java.lang.UnsupportedOperationException: null at java.base/java.util.AbstractList.add(AbstractList.java:153) at java.base/java.util.AbstractList.add(AbstractList.java:111) at java.base/java.util.AbstractCollection.addAll(AbstractCo…...

Ubuntu 24.04 LTS 和 ROS 2 Jazzy 环境中使用 Livox MID360 雷达

本文介绍如何在 Ubuntu 24.04 LTS 和 ROS 2 Jazzy 环境中安装和配置 Livox MID360 激光雷达&#xff0c;包括 Livox-SDK2 和 livox_ros_driver2 的安装&#xff0c;以及在 RViz2 中可视化点云数据的过程。同时&#xff0c;我们也补充说明了如何正确配置 IP 地址以确保雷达与主机…...

自动化立体仓库堆垛机SRM控制系统FC19手动控制功能块开发

1、控制系统手动控制模块HMI屏幕设计如下图 屏幕分为几个区域:状态显示区、控制输入区、导航指示区、报警信息区。状态显示区需要实时反馈堆垛机的位置、速度、载货状态等关键参数。控制输入区要有方向控制按钮,比如前后左右移动,升降控制,可能还需要速度调节的滑块或选择按…...

Ollama(1)知识点配置篇

ollama已经成功安装成功后&#xff0c;通常大家会对模型的下载位置和访问权限进行配置 1.模型下载位置修改 都是修改系统环境变量。 &#xff08;1&#xff09;默认下载位置 macOS: ~/.ollama/modelsLinux: /usr/share/ollama/.ollama/modelsWindows: C:\Users\你的电脑用户…...

VMware Workstation虚拟系统设置双网口

一.设置windows11系统VMware Network Adapter VMnet1。 1.进入到网络和Internet -> 高级网络设置 2.找到VMware Network Adapter VMnet1&#xff0c;进入到“更多配置选项”并“编辑”。 3.进入到属性&#xff0c;双击“Interenet协议版本4&#xff08;TCP/IPv4&#xff…...

Qt基础终结篇:从文件操作到多线程异步UI,深度解析核心要点

文章目录 前言一、QFileDialog 文件对话框二、QFileInfo 文件信息类三、QFile 文件读写类四、UI与耗时操作&#xff1a;避免UI卡顿与程序未响应五、多线程六、异步刷新与线程通信总结 前言 上一篇文章&#xff0c;我们已经把qt的基础知识讲解的差不多了。本文我们将继续进行qt…...

ubuntu中,文本编辑器nano和vim区别,vim的用法

目录 一.区别1.介绍2.适用场景3. 配置与个性化1&#xff09; nano&#xff1a;2&#xff09;Vim&#xff1a; 二.Vim1、Vim 的安装与启动2、Vim 的三种模式 &#xff08;普通模式、插入模式、命令行模式&#xff09;3、Vim 的常用操作4、Vim 的配置5、Vim 的高级功能 三.nano使…...

山洪灾害声光电监测预警解决方案

一、方案背景 我国是一个多山的国家&#xff0c;山丘区面积约占国土面积的三分之二。每年汛期&#xff0c;受暴雨等因素影响&#xff0c;极易引发山洪和泥石流。山洪、泥石流地质灾害具有突发性、流速快、流量大、物质容量大和破坏力强等特点&#xff0c;一旦发生&#xff0c;将…...

【Rust模式与匹配】Rust模式与匹配深入探索与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

React从基础入门到高级实战:React 高级主题 - React Concurrent 特性:深入探索与实践指南

React Concurrent 特性&#xff1a;深入探索与实践指南 引言 随着Web应用对用户体验的要求日益提高&#xff0c;React在2025年的技术环境中引入了并发渲染&#xff08;Concurrent Rendering&#xff09;这一革命性特性&#xff0c;旨在提升应用的响应速度和交互流畅度。并发渲…...

electron安装报错处理

electron安装报错 解决方法&#xff1a; 修改 C:\Users\用户名.npmrc下配置文件 添加代码 electron_mirrorhttps://cdn.npmmirror.com/binaries/electron/ electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-builder-binaries/最后代码 registryhtt…...

NHANES指标推荐:CQI

文章题目&#xff1a;The impact of carbohydrate quality index on menopausal symptoms and quality of life in postmenopausal women 中文标题&#xff1a;碳水化合物质量指数对绝经后妇女更年期症状和生活质量的影响 发表杂志&#xff1a;BMC Womens Health 影响因子&…...

【OpenHarmony】【交叉编译】使用gn在Linux编译3568a上运行的可执行程序

linux下编译arm64可执行程序 一.gn ninja安装二.交叉编译工具链安装1.arm交叉编译工具2.安装arm64编译器 三. gn文件添加arm及arm64工具链四.编译验证 本文以gn nijia安装中demo为例&#xff0c;将其编译为在arm64(rk_3568_a开发板)环境下可运行的程序 一.gn ninja安装 安装g…...

Med-R1论文阅读理解-1

论文总结&#xff1a;Med-R1: Reinforcement Learning for Generalizable Medical Reasoning in Vision-Language Models 论文写了什么&#xff1f; 本文提出了一种名为 Med-R1 的新框架&#xff0c;旨在通过强化学习&#xff08;Reinforcement Learning, RL&#xff09;提升…...

【从零开始学习QT】快捷键、帮助文档、Qt窗口坐标体系

目录 Qt Creator 中的快捷键 使用帮助文档 Qt 窗口坐标体系 QT专栏&#xff1a;QT_uyeonashi的博客-CSDN博客 Qt Creator 中的快捷键 • 注释&#xff1a;ctrl / • 运行&#xff1a;ctrl R • 编译&#xff1a;ctrl B • 字体缩放&#xff1a;ctrl 鼠标滑轮 • 查找&am…...

强化学习笔记总结(结合论文)

本篇博客参考来自大佬的开源书籍&#xff0c;结合自己的思考&#xff0c;写了这一篇总结&#xff0c;帮助大家学习了解强化学习的基础知识 文章目录 强化学习特点定义 强化学习应用实例强化学习和监督式学习、非监督式学习分类强化学习和监督式学习的区别&#xff1a;强化学习…...

Java线程安全解决方案全面指南

Java线程安全解决方案全面指南 引言 在多线程编程中&#xff0c;线程安全是保证程序正确性的关键要素。Java作为一门广泛用于并发编程的语言&#xff0c;提供了丰富的线程安全解决方案。本文将全面介绍Java中实现线程安全的各类方法&#xff0c;帮助开发者编写出更健壮的多线…...

superior哥深度学习系列(大纲)

&#x1f680; superior哥深度学习系列学习大纲&#xff08;2025版&#xff09; 嘿&#xff01;各位AI探索者们&#xff01;&#x1f44b; 这是superior哥精心打造的深度学习学习路线图。从零基础小白到AI实战高手&#xff0c;这份大纲会陪你一路成长&#xff01;记住&#xff…...

基于stm32的多旋翼无人机(Multi-rotor UAV based on stm32)

由于一直在调试本项目&#xff0c;好久没有发文章&#xff0c;最近本项目的PID调试初见成效&#xff01;开始正文前首先感谢各位粉丝的支持&#xff0c;以及对本项目技术上支持的老师以及师兄&#xff0c;谢谢你们&#xff01; 对应源码及文件&#xff1a;源码及文件下载 基于…...

实验分享|基于sCMOS相机科学成像技术的耐高温航空涂层材料损伤检测实验

1实验背景 航空发动机外壳的耐高温涂层材料在长期高温、高压工况下易产生微小损伤与裂纹&#xff0c;可能导致严重安全隐患。传统光学检测手段受限于分辨率与灵敏度&#xff0c;难以捕捉微米级缺陷&#xff0c;且检测效率低下。 某高校航空材料实验室&#xff0c;采用科学相机…...

RAG混合检索:倒数秩融合RRF算法

文章目录 检索增强生成 (RAG)倒数秩融合在 RAG 中的工作原理RRF 背后的数学直觉检索增强生成 (RAG) RAG 是自然语言处理中的一种强大技术,结合了基于检索的模型和生成模型的优势。 如果检索器未能从检索器中获取相关文档,则精度较低,幻觉的可能性会增加。 有些查询适合…...

2011肠衣问题

1 D类竞赛题目---具体题目 D题 天然肠衣搭配问题 天然肠衣&#xff08;以下简称肠衣&#xff09;制作加工是我国的一个传统产业&#xff0c;出口量占世界首位。肠衣经过清洗整理后被分割成长度不等的小段&#xff08;原料&#xff09;&#xff0c;进入组装工序。 传统的生产…...

RG3000网关构建5G LAN智慧工厂智能制造

在工业4.0与智能制造的趋势下&#xff0c;传统制造业正前后往智慧工厂转型升级。在转型过程中&#xff0c;高效、稳定、灵活的网络通信是实现设备互联互通、数据实时交互与智能决策的基础。智联物联RG3000网关&#xff0c;凭借其融合5G通信技术、WiFi6无线传输、边缘计算能力与…...

Rust语言学习教程、案例与项目实战指引

Rust语言学习教程、案例与项目实战指引 一、入门教程 &#xff08;一&#xff09;官方核心文档 Rust官方网站的核心文档是踏上Rust学习征程的绝佳起点。这里犹如一座知识宝库&#xff0c;涵盖了Rust编程时可能遇到的几乎所有内容&#xff0c;从基础语法到高级特性&#xff0c;一…...

通信应用高速模数转换器ADC

在5G通信、医疗成像、航空航天及工业自动化等关键领域&#xff0c;高速ADC模数转换器作为信号链的“心脏”&#xff0c;其性能直接决定了系统的精度与效率。然而&#xff0c;如何精确测试高速ADC的动态参数、优化设计验证流程、应对复杂应用场景的挑战&#xff0c;始终是工程师…...

大模型测评选型指南:企业级大模型测评实战解析

在当今数字化飞速发展的时代&#xff0c;AIGC大模型如雨后春笋般涌现&#xff0c;为各行业带来创新变革的同时&#xff0c;其安全性也成为了不容忽视的关键问题。随着人工智能技术加速落地&#xff0c;AIGC大模型的安全合规已成为产业发展的核心命题。那么&#xff0c;企业该如…...

微信小程序学习目录

个人简介 &#x1f468;‍&#x1f4bb;‍个人主页&#xff1a; 魔术师 &#x1f4d6;学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全栈发展 &#x1f6b4;个人状态&#xff1a; 研发工程师&#xff0c;现效力于政务服务网事业 &#x1f1e8;&#x1f1f3;人生格言&…...

AG32 DMAC实现内部MCU与FPGA通信【知识库】

一、简介 DMAC是独立于MCU和FPGA之外的外设&#xff0c;连接到AHB总线&#xff0c;可通过寄存器配置实现直接内存存取。通过AHB总线实现MCU与FPGA进行高性能通信。理论最高传输速率可达 bus_clock * 32 168MHz * 32 5376Mbps 5.25Gbps&#xff0c;超频到336MHz的形况下&…...

webrtc初了解

1. webrtc的简介 一、WebRTC 是什么&#xff1f; Web Real-Time Communication&#xff08;网页实时通信&#xff09;&#xff0c;是浏览器原生支持的实时音视频通信技术&#xff0c;无需安装插件或客户端&#xff0c;可直接在浏览器之间实现点对点&#xff08;P2P&#xff09…...

[STM32学习笔记(九)]CubeMX项目使用系统定时器SysTick的中断服务函数进行定时

有很多文章说明了由于HAL_Delay()函数的本质是系统定时器计数&#xff0c;通过全局变量uwTick的不断增加实现的比较延迟。调用HAL_Delay()函数会阻塞其他工作&#xff0c;因此在外设ISR进程调用该延迟时&#xff0c;要特别小心。 因此&#xff0c;现在考虑&#xff0c;既然系统…...