removeAll引发得java.lang.UnsupportedOperationException异常

article/2025/11/8 10:33:57

异常:

java.lang.UnsupportedOperationExceptionat java.util.AbstractList.remove(AbstractList.java:161)at java.util.AbstractList$Itr.remove(AbstractList.java:374)at java.util.AbstractCollection.removeAll(AbstractCollection.java:376)at com.feiniu.tms.b2b.web.controller.OrderPatchController.synRetail(OrderPatchController.java:104)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:50)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:71)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:236)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:97)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at com.feiniu.huntaway.trace.client.web.TraceFilter$TraceHandler$2.handle(TraceFilter.java:142)at com.feiniu.huntaway.trace.client.web.TraceFilter.doFilter(TraceFilter.java:46)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:167)at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80)at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)

异常出现地方:

 

 

原因:Arrays.asList 方法的返回类型是ArrayList类型,该类型并不是java.util.ArrayList 而是 java.util.Arrays.ArrayList 是Arrays的内部类,该实现类AbstractList实现类,并没有实现removeAll方法,当调用removeAll时因为需要调用remove方法,但是java.util.Arrays.ArrayList中没有remove方法,会调用AbstractList的remove方法,该方法源码为

public E remove(int index) {throw new UnsupportedOperationException();
}

就会抛出异常。

java.util.Arrays.ArrayList源码:

    public static <T> List<T> asList(T... a) {return new ArrayList<>(a);}private static class ArrayList<E> extends AbstractList<E>implements RandomAccess, java.io.Serializable{private static final long serialVersionUID = -2764017481108945198L;private final E[] a;ArrayList(E[] array) {a = Objects.requireNonNull(array);}@Overridepublic int size() {return a.length;}@Overridepublic Object[] toArray() {return a.clone();}@Override@SuppressWarnings("unchecked")public <T> T[] toArray(T[] a) {int size = size();if (a.length < size)return Arrays.copyOf(this.a, size,(Class<? extends T[]>) a.getClass());System.arraycopy(this.a, 0, a, 0, size);if (a.length > size)a[size] = null;return a;}@Overridepublic E get(int index) {return a[index];}@Overridepublic E set(int index, E element) {E oldValue = a[index];a[index] = element;return oldValue;}@Overridepublic int indexOf(Object o) {E[] a = this.a;if (o == null) {for (int i = 0; i < a.length; i++)if (a[i] == null)return i;} else {for (int i = 0; i < a.length; i++)if (o.equals(a[i]))return i;}return -1;}@Overridepublic boolean contains(Object o) {return indexOf(o) != -1;}@Overridepublic Spliterator<E> spliterator() {return Spliterators.spliterator(a, Spliterator.ORDERED);}@Overridepublic void forEach(Consumer<? super E> action) {Objects.requireNonNull(action);for (E e : a) {action.accept(e);}}@Overridepublic void replaceAll(UnaryOperator<E> operator) {Objects.requireNonNull(operator);E[] a = this.a;for (int i = 0; i < a.length; i++) {a[i] = operator.apply(a[i]);}}@Overridepublic void sort(Comparator<? super E> c) {Arrays.sort(a, c);}}

解决:

List<String> retailNoList = new ArrayList<>(Arrays.asList(retailNos.split(",")));

原理是将  java.util.Arrays.ArrayList值复制到新的java.util.ArrayList对象中。

 

 


http://chatgpt.dhexx.cn/article/p06n3tAu.shtml

相关文章

一个由List.removeAll()失效引发的思考

前言&#xff1a; 本来以为是个错误使用的问题&#xff0c;稍微那么深究一下&#xff0c;发现脑海中&#xff0c;关于这个部分的知识库存已经告急了&#xff0c;可不能啊。 removeAll() 失效重现 今天做一个批量删除的功能&#xff0c;我使用了 List.removeAll()这个方法&…

java removeall对象_list 删除对象 remove 和 removeAll 区别 及迭代器删除

可以看到remove 有两个方法&#xff0c;一个返回值是Boolean。一个返回值是删除的对象类型&#xff0c;这个参数是该对象在列表中的位置(用的少)。 区别&#xff1a;remove是删除List中的一条数据&#xff0c;参数是List<> 的一个泛型对象&#xff0c;删除也只删除一条。…

Java 中 HashSet 的 removeAll 性能分析

1. 概述 HashSet是一个用于存储唯一元素的集合。 在本文中&#xff0c;我们将讨论java.util.HashSet 类中removeAll()方法 的性能。 2. HashSet.removeAll() HashSet 的 removeAll 方法删除所有包含指定集合的元素&#xff1a; Set<Integer> set new HashSet<In…

Python爬虫案例解析:五个实用案例及代码示例(学习爬虫看这一篇文章就够了)

导言&#xff1a; Python爬虫是一种强大的工具&#xff0c;可以帮助我们从网页中抓取数据&#xff0c;并进行各种处理和分析。在本篇博客中&#xff0c;我们将介绍五个实用的Python爬虫案例&#xff0c;并提供相应的代码示例和解析。通过这些案例&#xff0c;读者可以了解如何应…

python爬虫实验总结_python爬虫总结

python2转成python3的问题: 使用python3下边的2to3.py 打开cmd,进到python安装目录下的 \Tools\scripts文件夹中 输入python 2to3.py -w 目标py文件路径/目标.py 通过这种方式可以将一些格式的区别进行转化。 import格式的区别: py2和py3的import机制不同,详情可以百度…

利用Python爬虫技术爬取京东商品评论

这是我第一次接触python时&#xff0c;我们学校做的项目实训&#xff0c;其实整个项目实训过程很简单&#xff0c;并没有什么难度&#xff0c;认真学学就会。 首先&#xff0c;我们要明确我们的目标&#xff1a;从京东上爬取产品的评论。一般评论都是进行情感分析&#xff0c;但…

通过Python爬虫技术获取小说信息

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85673772 实验目的 使用Python爬虫技术获取小说信息&#xff0c;包括小说名称、小说作者以及小说简介等作品信息&#xff01;在实验中掌握Python的第三方库requests和lxml 实验内容 明确实验需求—…

Python爬虫详解

从今天开始&#xff0c;给大家介绍Python爬虫相关知识&#xff0c;今天主要内容是爬虫的基础理论知识。 一、爬虫简介 爬虫是指通过编写程序&#xff0c;来模拟浏览器访问Web网页&#xff0c;然后通过一定的策略&#xff0c;爬取指定内容。因此&#xff0c;爬虫的编写通常分为…

python爬虫技术简介-python网络爬虫---简介与认识HTTP

一、python爬虫环境与简介 二、认识HTTP 三、简单静态网页爬取 四、常规动态网页爬取 五、模拟登陆 六、PC客户端抓包 七、Scrapy爬虫 一、python爬虫环境与简介 1、认识爬虫 &#xff08;1&#xff09;爬虫的概念 网络爬虫也被称为网络蜘蛛、网络机器人&#xff0c;…

python 爬虫总结

requests模块 import reqeusts # get 请求 # 网址 url_login "url://123.com"# 请求头 headers {User-Agent: Apipost client Runtime/https://www.apipost.cn/ }# 参数&#xff0c;形式字典 kw {key:value} response reqeusts.get(urlurl_login,paramskw)# pos…

Python爬虫介绍

一、什么是爬虫 爬虫&#xff1a;一段自动抓取互联网信息的程序&#xff0c;从互联网上抓取对于我们有价值的信息 二、Python爬虫架构 Python爬虫架构主要由五个部分组成&#xff0c;分别是调度器、URL管理器、网页下载器、网页解析器、应用程序&#xff08;爬取的有价值数据…

Python实用技术——爬虫(一):爬虫基础

目录 爬虫这门技术本身是不违法的&#xff0c;但是应该注意&#xff1a; 1&#xff0c;爬取什么数据 2&#xff0c;如何爬取得来的 3&#xff0c;爬取之后如何使用 二&#xff0c;HTTP协议 1&#xff0c;万维网 2&#xff0c;协议&#xff1a; 三&#xff0c;HTTP知识 …

Python爬虫讲解(超详细)

Python爬虫是一种通过编写程序自动从互联网上获取数据的技术。下面是Python爬虫的详解&#xff1a; 爬虫的基本原理 爬虫的基本原理是**通过模拟浏览器的行为**&#xff0c;访问目标网站&#xff0c;并获取目标页面中的数据。Python爬虫可以使用requests库来发送HTTP请求&…

python爬虫技术整理

Python爬虫——新闻热点爬取 显示更多 可以看到相关的数据接口&#xff0c;里面有新闻标题以及新闻详情的url地址 如何提取url地址 1、转成json&#xff0c;键值对取值&#xff1b; 2、用正则表达式匹配url地址&#xff1b;根据接口数据链接中的pager 变化进行翻页&#xf…

Pytorch创建多任务学习模型

在机器学习中&#xff0c;我们通常致力于针对单个任务&#xff0c;也就是优化单个指标。但是多任务学习(MTL)在机器学习的许多应用中都取得了成功&#xff0c;从自然语言处理和语音识别到计算机视觉和药物发现。 MTL最著名的例子可能是特斯拉的自动驾驶系统。在自动驾驶中需要…

多任务学习 Pytorch实现

多任务学习MTL的简单实现&#xff0c;主要是为了理解MTL 代码写得挺烂的&#xff0c;有时间回来整理一下 import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms import numpy as np import matplotlib.pyplot as plt import ma…

【综述】多任务学习

前言 本文对多任务学习(multi-task learning, MTL)领域近期的综述文章进行整理&#xff0c;从模型结构和训练过程两个层面回顾了其发展变化&#xff0c;旨在提供一份 MTL 入门指南&#xff0c;帮助大家快速了解多任务学习的进化史。 1. 什么是多任务学习&#xff1f; 多任务学习…

多任务学习原理与优化

文章目录 一、什么是多任务学习二、为什么我们需要多任务学习三、多任务学习模型演进Hard shared bottom 硬共享Soft shared bottom 软共享软共享&#xff1a; MOE & MMOE软共享&#xff1a; CGC & PLE加入FMMMOE/PLE 的调参ESMM 四、 loss权重1&#xff0c; 利用任务的…

【多任务学习-Multitask Learning概述】

多任务学习-Multitask Learning概述 1.单任务学习VS多任务学习多任务学习的提出多任务学习和单任务学习对比 2.多任务学习共享表示shared representation&#xff1a;多任务学习的优点那么如何衡量两个任务是否相关呢&#xff1f; 当任务之间相关性弱多任务MLP特点总结多任务学…

多任务学习(Multi-Task Learning, MTL)

目录 [显示] 1 背景2 什么是多任务学习&#xff1f;3 多任务学习如何发挥作用&#xff1f; 3.1 提高泛化能力的潜在原因3.2 多任务学习机制3.3 后向传播多任务学习如何发现任务是相关的4 多任务学习可被广泛应用&#xff1f; 4.1 使用未来预测现在4.2 多种表示和度量4.3 时间序…