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 ...
随机推荐
- 33.HAVING 子句
HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用. SQL HAVING 语法 SELECT column_name, aggregate_f ...
- 浅谈Android内存管理
最近在网上看了不少Android内存管理方面的博文,但是文章大多都是就单个方面去介绍内存管理,没有能全局把握,缺乏系统性阐述,而且有些观点有误,仅仅知道这些,还是无法从整体上理解内存管理,对培养系统优 ...
- layer弹出框插件参数及方法介绍
layerui下载:http://www.layui.com 更多参数请阅读开发文档:http://www.layui.com/doc/modules/layer.html Layui 是一款采用自身 ...
- Java 正则表达式的实际应用
正则表达式最详细-----> | |目录 1匹配验证-验证Email是否正确 2在字符串中查询字符或者字符串 3常用正则表达式 4正则表达式语法 1匹配验证-验证Email是否正确 public ...
- 为docker设置国内镜像
docker的默认镜像(https://hub.docker.com/)地址,拉取镜像时是比较慢的,经常会超时,有时拉取几个小时.为了加快拉取的时间和速度,需要添加中国的镜像地址: 国内的加速地址: ...
- 编写高质量代码改善C#程序的157个建议——建议36:使用FCL中的委托声明
建议36:使用FCL中的委托声明 FCL中存在3类这样的委托声明,它们分别是:Action.Func.Predicate.尤其是在它们的泛型版本出来以后,已经能够满足我们在实际编码过程中的大部分需求. ...
- MYSQL常用日期操作
mysql查询今天.昨天.7天.近30天.本月.上一月 数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT ...
- QuotedStr函数
今天学到一个新函数,很有用 QuotedStr(s);// 在s两边加单引号, 这样就不会看着n多的单引号糊涂了...
- 【转】android中layout_weight的理解
android Layout_weight的理解 SDK中的解释: Indicates how much of the extra space in the LinearLayout will be ...
- centos7下git的安装和配置
git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装. 1. 查 ...