java - list 报java.lang.UnsupportedOperationException
情景
现在有个数组,比如:String[] array = new String[]{"1","2","3"};
我们想要往这个数组中添加或删除元素。
思路
我们知道,数组是没有add,remote这些method的。
所以我们需要将数组转换为list集合,list有这些功能啊,操作完之后,再将list转换为数组即可。没毛病!!
操作
public class test {
public static void main(String[] args) {
String[] array = new String[]{"1","2","3"};
List<String> list1 = Arrays.asList(array);
// 我们想要的操作
list1.add("4");
list1.remove("1");
// 操作结束后,再转为数组
Object[] array2 = list1.toArray();
for(Object a: array2) {
System.out.println(a);
}
}
}
这段代码,看着没毛病。运行~~~

在list1.add("4"); 这一步就报错了。不支持这个操作。同样,remove也不支持咯。
原因
Arrays.asList(String[])这种方式只能转为Arrays$ArrayList类,Arrays$ArrayList和ArrayList都是继承AbstractList,AbstractList类是不操作remove,add等method的,所以Arrays$ArrayList 也就不支持这些方法,默认throw UnsupportedOperationExceptiony异常。而ArrayList重写了remove,add等method,所以可以使用这些方法。
修改
public class test {
public static void main(String[] args) {
String[] array = new String[]{"1","2","3"};
List<String> list1 = Arrays.asList(array);
List<String> list2 = new ArrayList<String>(list1);
// 我们想要的操作
list2.add("4");
list2.remove("1");
// 操作结束后,再转为数组
Object[] array2 = list2.toArray();
for(Object a: array2) {
System.out.println(a);
}
}
}
我们需要将Arrays$ArrayList类转换为ArrayList类,再来进行操作。结束之后,转为数组。查看结果

两个操作都成功了!
java - list 报java.lang.UnsupportedOperationException的更多相关文章
- 关于使用JAVA正则表达式报java.lang.StackOverflowError错误问题
最近在使用hadoop做apache日志分析,发现测试数据没问题,但数据一多就出问题,报 java.lang.StackOverflowError错误,最后定位为正则表达式栈溢出,发现某些行的日志数据 ...
- 我的Java开发学习之旅------>Java NIO 报java.nio.charset.MalformedInputException: Input length = 1异常
今天在使用Java NIO的Channel和Buffer进行文件操作时候,报了java.nio.charset.MalformedInputException: Input length = 1异常, ...
- idea 启动java项目报 java: 程序包org.apache.jasper.tagplugins.jstl.core不存在
File -- Project Structure
- 【java】在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException
场景: 在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException 错误: java.lang ...
- java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12
最近使用Android Studio开发一个新项目,刚做完几个界面,跑在android 5.0上面很正常,因为都是挺简单的布局,本以为应该不存在兼容性问题(Flag啊). 偶然用了一个4.x的实机测试 ...
- java.lang.UnsupportedOperationException: Not supported by BasicDataSource
场景: SpringMVC+Hibernate+Maven 问题: 在src/main/resources 目录中添加hibernate.properties文件, 则如果存在这句hibernate. ...
- Caused by: java.lang.UnsupportedOperationException
对Arrays.asList()返回的List进行操作之后报错Caused by: java.lang.UnsupportedOperationException 让我们来看一下Arrays.asLi ...
- java 异常java.lang.UnsupportedOperationException
在项目中采用一个枚举的集合,本人采用Collections中的空集合Collections.emptyList()在添加时发生异常: 常见集合如下: private List<VacationC ...
- java.lang.UnsupportedOperationException
在运行路况预测这个项目时,报错出现:java.lang.UnsupportedOperationException 原因:我将1.3版本和1.6版本的两个jar包都Add to Build Path ...
随机推荐
- solidity mapping of mapping
solidity mapping of mapping,两层映射,用的时候可以像二维数组一样去访问和修改值,非常方便. 以下代码示例中的这一句: mapping(string => mappin ...
- 性能优化之_android内存
优化内存使用主要是三个原则: CPU如何操纵特定的数据类型 数据和指令需要占用多少存储空间 数据在内存中的布局方式 处理大量数据时,使用可以满足要求的最小字节数据类型,能用short就不用int,能用 ...
- 使用 tpl 标签和 for 读取对象属性值中的数组
来源于<sencha touch 权威指南> ----------------------------- 只摘抄app.js代码: Ext.require(['Ext.form.Panel ...
- 2.sql分类
SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法.但是 SQL 语言也包含用于更新.插 ...
- Luogu 4069 [SDOI2016]游戏
BZOJ 4515 树链剖分 + 李超线段树 要求支持区间插入一条线段,然后查询一个区间内的最小值.可以使用李超线段树解决,因为要维护一个区间内的最小值,所以每一个结点再维护一个$res$表示这个区间 ...
- asp.net web 自定义控件
0.调用代码 protected override void Page_Load(object sender, EventArgs e) { //给基类服务接口复制,可不付 if (IsPostBac ...
- redis的一些简介
Redis是Remote Dictionary Server的缩写,他本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库. 1. redis的数据类型: st ...
- MySQL性能调优与架构设计——第6章 MySQL Server 性能的相关因素
第6章 MySQL Server 性能的相关因素 前言 大部分人都一致认为一个数据库应用系统(这里的数据库应用系统概指所有使用数据库的系统)的性能瓶颈最容易出现在数据的操作方面,而数据库应用系统的大部 ...
- linux下SVN服务器配置
SVN服务器配置 1. 安装svn服务 yum install subversion 2. 新建一个目录用于存储SVN所有文件 mkdir /home/svn 3. 创建项目 在上面创建的文件夹中为项 ...
- HackSeven Canvas上的动画
当自定义View的时候,可以利用Canvas给View添加一些动画效果. 下面的例子,是在屏幕上绘制一个红色的小方块,这个小方块会在屏幕上面“乱跳”. 知识点 使用到的知识点: (1) 在View的子 ...