Collections.emptyList()引发的java.lang.UnsupportedOperationException

从0到1构建数据分析AI Agent:数据采集、洞察生成与报告自动化 在企业数字化转型的今天,数据分析师80%的时间被消耗在重复取数、数据清洗、报表排版等低价值劳动上,真正用于深度业务洞察和决策支持的时间不足20%。本文将从核心概念、技术原理、代码实现、落地实践全维度,教你从0到1搭建一套完整的数据分析AI Agent系统,实现「用户用自然语言提需求→Agent自动采集多源数据→AI自动挖掘业务洞察→自动生成符合业务要求的多格式报告」的全链路自动化,平均可将需求响应速度从天级压缩到分钟级,释放70%以上的分析师人力成本。 阅读详情

缘由:

private static List<Integer> getEmptyList() {
return Collections.emptyList();
}

public static void main(String[] args) {
try {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1,2,3,4,5));
List<Integer> list2 = getEmptyList();
list2.addAll(list1);
System.out.println(list1.toString());
} catch (Exception e) {
e.printStackTrace();
}
}


此方法会抛出以下异常:

java.lang.UnsupportedOperationException
at java.util.AbstractList.add(Unknown Source)
at java.util.AbstractList.add(Unknown Source)
at java.util.AbstractCollection.addAll(Unknown Source)

...


原因在于


ArrayList里面有addAll的实现, 详见源码

    public boolean addAll(Collection<? extends E> c) {
        Object[] a = c.toArray();
        int numNew = a.length;
        ensureCapacityInternal(size + numNew);  // Increments modCount
        System.arraycopy(a, 0, elementData, size, numNew);
        size += numNew;
        return numNew != 0;
    }

而emptyList里面没有, 详见源码

/**
     * @serial include
     */
    private static class EmptyList<E>
        extends AbstractList<E>
        implements RandomAccess, Serializable {
        private static final long serialVersionUID = 8842843931221139166L;


        public Iterator<E> iterator() {
            return emptyIterator();
        }
        public ListIterator<E> listIterator() {
            return emptyListIterator();
        }


        public int size() {return 0;}
        public boolean isEmpty() {return true;}


        public boolean contains(Object obj) {return false;}
        public boolean containsAll(Collection<?> c) { return c.isEmpty(); }


        public Object[] toArray() { return new Object[0]; }


        public <T> T[] toArray(T[] a) {
            if (a.length > 0)
                a[0] = null;
            return a;
        }


        public E get(int index) {
            throw new IndexOutOfBoundsException("Index: "+index);
        }


        public boolean equals(Object o) {
            return (o instanceof List) && ((List<?>)o).isEmpty();
        }


        public int hashCode() { return 1; }


        // Preserves singleton property
        private Object readResolve() {
            return EMPTY_LIST;
        }
    }


但是, 如果我们这么写就可以避免这个异常

private static List<Integer> getEmptyList() {
return Collections.emptyList();
}

public static void main(String[] args) {
try {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1,2,3,4,5));
List<Integer> list2 = getEmptyList();
list1.addAll(list2);
System.out.println(list1.toString());
} catch (Exception e) {
e.printStackTrace();
}
}


程序可以输出

[1, 2, 3, 4, 5]



所以以后用 Collections.emptyList() 的时候要注意addAll的操作

【INMP441】 MEMS麦克风,让硬件“听得见”,更要“听得清” INMP441是一款数字MEMS麦克风,采用PDM接口输出高质量数字音频信号。相比传统模拟麦克风,它具有高度集成、抗干扰强、功耗低等优势,支持通过时钟启停实现软件控制开关。该麦克风体积小巧但功能强大,内置MEMS传感器、ADC转换器等模块,适合智能音箱、语音遥控等应用。工程师可通过ESP32等主控芯片轻松连接INMP441,利用多麦克风阵列实现波束成形等高级功能。INMP441展现了数字音频采集的先进技术,为创客和智能硬件开发者提供了优秀的音频解决方案。 阅读详情

相关推荐

跨平台烧录实战:RKDevTool在Windows/Linux/MacOS下的统一与差异

本文详细解析了RKDevTool在Windows、Linux和macOS三大操作系统下的固件烧录实践,重点介绍了RK3576开发板的环境配置、工具链选择、烧录模式切换及常见问题解决方案,帮助开发者构建稳定可靠的跨平台烧录工作流。

cnn8visionary的博客 201

记录一下最近出现的一个大坑问题,Collections.emptyList()

Collections.emptyList()使用需要注意的问题

她从小就是校花的博客 637

Windows平台MuJoCo仿真环境配置与Qt集成实战

本文详细介绍了在Windows平台上配置MuJoCo物理仿真环境并与Qt框架集成的完整实战流程。内容涵盖从环境准备、库文件配置、项目创建到核心代码编写的每一步,重点解决了Windows下常见的编译链接错误和路径问题,帮助开发者在Windows系统中高效搭建机器人仿真与可视化控制开发环境。

weixin_29221753的博客 169

springmvc org.springframework.context.NoSuchMessageException错误

org.springframework.context.NoSuchMessageException: No message found under code 'msg' for locale 'zh_TW'. at org.springframework.context.support.DelegatingMessageSource.getMessage(DelegatingMessag...

smile_foreach的博客 2297

工业组态软件Intouch(单机版)入门{第一篇}

通俗来讲Intouch就是一个能将PLC里的信号显示在画面上的软件。

weixin_41571357的博客 1万+

基于轻量化网络的干扰信号智能识别算法

针对干扰信号识别时卷积神经网络模型体积大、训练周期长、对硬件存储和计算要求高等问题,本 文提出了一种基于改进轻量级网络模型 SqueezeNet 的干扰信号智能识别算法。该方法首先利用距离多普勒 (Range‑Doppler,RD)处理获得目标及干扰信号的RD图像,接着采用滑窗变换、归一化等技术对RD图像进行重 塑;然后采用基于 RD 信息尺寸的隐层和通道剪枝措施对 SqueezeNet 网络进行改进,缩小了模型尺寸和存储空 间;最后利用不同参数的测试样本拓展网络模型的泛化性能。

qq_43416206的博客 542

Collections.emptyList()使用

Collections.emptyList()方法说明:返回一个空的集合。调用者不需要再做非空判断。返回的是一个不可变并且长度为0的静态内部类。可以减少内存开销。但是返回的空集合,不可以执行增删操作。具体源码如下: public static final List EMPTY_LIST = new EmptyList<>(); public static final <...

chenxue843400447的博客 3427

国科大学习资料--计算机网络--历年考题1

国科大学习资料–计算机网络–历年考题1 1、假定有一个通信协议,每个分组都引入100字节的开销用于头和成帧,现在使用这个协议发送1M字节的数据(为方便计算,1M=10^6),然而在传递的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃并重传。(1)当数据的分组大小为1000、5000、20000和40000字节时,计算相应(包括开销)的传递字节总数目。(2)计算分组大小的最优值是多少,即分组的大小为何值时总的传输字节数最少。(提示:最优值不是1000、5000、20000和40000字节中的一个)

无名何许人的博客 1180

集合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

CMake是什么?为什么学习CMake

CMake的主要作用和重要性,包括其在跨平台构建中的应用、如何支持多种编译器及操作系统,以及它在管理大型和复杂项目中的优势。

小鱼酱的博客 3866

innovus:sroute 双层follow pin的做法

根据std cellpower pin的层次可以分成两种情况。

m0_61544122的博客 2722

Collections的emptyList()经验,Collections.emptyList()集合中保存元素,报异常 java.lang.UnsupportedOperationException

一、Collections.emptyList()集合中使用add()保存元素,报异常 java.lang.UnsupportedOperationException分析 1、保存元素抛出异常:java.lang.UnsupportedOperationException 2、原因是Collections.emptyList()内部空集合没有实现AbstractList<T>中的a...

fengbin111的博客 1673

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java异常java.lang.UnsupportedOperationException解决方法

1.java异常报错如下 java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at com.hiss.entity.binary.response.Fre...

wfanking的博客 8670

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Collections的EMPTY_LIST/emptyList()导致java.lang.UnsupportedOperationException

描述:使用Collections.EMPTY_LIST或Collections.emptyList()返回的空集合,如果进行修改会报错java.lang.UnsupportedOperationException 原因:Collections.EMPTY_LIST的类型为EmptyList,没有实现修改方法,实现了AbstractList类 // 类型 public static final List EMPTY_LIST = new EmptyList<>(); // 继承关系 priva.

weixin_44385360的博客 994

bug记录:java.lang.UnsupportedOperationException

java.lang.UnsupportedOperationException 最近遇到一个这样的问题,报错如下:模拟的代码:想要对一个list处理,但是通过Optional.ofNullable防止为空,如果为空,则返回一个Collections.emptyList(),空的List。之后对返回的stringList做新增处理,调用add方法,就报错了。

qq_1763467007的博客 877

java 异常java.lang.UnsupportedOperationException

在项目中采用一个枚举的集合,本人采用Collections中的空集合Collections.emptyList()在添加时发生异常: 常见集合如下: private List<VacationCategory> vacationcategorys = Collections.emptyList(); 报错误如下: -- Encapsulated excepti...

diwei8531的博客 132

java.lang.UnsupportedOperationException——Collections.emptyList()和Arrays.asList 源码分析

某天碰到这样一个报错: java.lang.UnsupportedOperationException 不支持的操作异常,然后就去检查代码,发现了这个List方面的坑。 同事的代码中有一个方法A中在其中一种情况下,return Collections.emptyList(); 然后他在另一个方法B中调用了这个A方法,对A方法返回的结果进行了继续操作,比如 list.add("xxx");这个...

逆水行舟 929

一个java.lang.UnsupportedOperationException

今天在线上出现一个UnsupportedOperationException导致接口报错: java.lang.UnsupportedOperationException: null at java.util.AbstractList.add(AbstractList.java:148) ~[na:1.8.0_77] at java.util.AbstractList.add...

路漫漫,等风来 1641

java 异常java.lang.UnsupportedOperationException ---EmptyList此集合竟然没有相应的add,remove等方法

在项目中采用一个枚举的集合,本人采用Collections中的空集合Collections.emptyList()在添加时发生异常: 常见集合如下: private List vacationcategorys = Collections.emptyList();    报错误如下: -- Encapsulated exception ------------

IT小白 1981

java 异常java.lang.UnsupportedOperationException(转)

背景: 有时我们在对集合类操作的时候,会报java 异常java.lang.UnsupportedOperationException。这是因为部分集合类型一样但是缺少部分方法或不支持。会报错的特殊情况如下:(1) 常常使用Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于:

diyinqian的博客 3762

java.lang.异常_java 异常java.lang.UnsupportedOperationException

在项目中采用一个枚举的集合,本人采用Collections中的空集合Collections.emptyList()在添加时发生异常:常见集合如下:private List vacationcategorys = Collections.emptyList();报错误如下:-- Encapsulated exception ------------\java.lang.UnsupportedOper...

weixin_31236101的博客 414

报错:java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148)

问题:使用 Collections.emptyList() 声明对象,调用 add 方法报错。 List<String> list = Collections.emptyList(); list.add("a"); 报错信息:java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) 报错截图 报错原因 需要了解 Collections.emptyList(); 内

程序员阿文 2193

使用List时出现 java.lang.UnsupportedOperationException

今天使用List时出现java.lang.UnsupportedOperationException 代码如下: List lists = Collections.emptyList(); lists.add("aa"); lists.add("cc"); lists.add("bb"); 运行出现 Exception in thread "main" java.lang.Unsu

小狐狸和小兔子 2084
上一篇: Windows安装Maven
下一篇: adb命令行详解
github_17844375
博客等级 码龄12年 2粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值