Listremove数据时报错:Caused by: java.lang.UnsupportedOperationException

看了二哥的foreach陷阱后,自己也遇见了需要循环删除元素的情况,立马想到了当时自己阴差阳错的避开所有坑的解决方式:先倒序遍历,再删除。之前好使,但是这次不好使了,报错Caused by: java.lang.UnsupportedOperationException。

阿里面试官:为什么Java开发手册强制不要在 foreach 里进行元素删除? | 二哥的Java进阶之路

这次的代码为:

复制代码
Object[] fields = aaaa.getFields();
List<Object> list = Arrays.asList(fields);
for(int i = list.size()-1; i >= 0; i--){
    if (cccc.contains(String.valueOf(i))){
        list.remove(i);
    }
}

根据包含的下标来删除元素的循环。

查询元宝后得知:Arrays.asList(fields); 是对原本的数组进行操作,而原本的数组只支持读,改,不支持结构性修改,比如使用list的add或者remove。

解决方式:使用new ArrayList<>();包裹一层就可以了。

复制代码
List<Object> list = new ArrayList<>(Arrays.asList(fields));

这个实现了与原本数组的解耦,新创建了个对象,与原本的数据没有关系了,所以这样可以进行增删操作。

相关推荐
纪元A梦1 小时前
华为OD机试真题——荒岛求生(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
java·c语言·javascript·c++·python·华为od·go
苹果酱05671 小时前
iview 表单验证问题 Select 已经选择 还是弹验证提示
java·vue.js·spring boot·mysql·课程设计
夏子曦2 小时前
C#——NET Core 中实现汉字转拼音
开发语言·c#
꧁坚持很酷꧂3 小时前
Qt天气预报系统绘制温度曲线
开发语言·qt
电商数据girl3 小时前
【Python爬虫电商数据采集+数据分析】采集电商平台数据信息,并做可视化演示
java·开发语言·数据库·爬虫·python·数据分析
海尔辛3 小时前
学习黑客Bash 脚本
开发语言·学习·bash
夏季疯3 小时前
学习笔记:黑马程序员JavaWeb开发教程(2025.3.30)
java·笔记·学习
LUCIAZZZ3 小时前
简单介绍分布式定时任务XXL-JOB
java·spring boot·分布式·spring·操作系统·定时任务
bing_1584 小时前
Spring MVC Controller 方法的返回类型有哪些?
java·spring·mvc