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 ...
随机推荐
- Ubuntu下配置Apache的Worker模式
其实Apache本身的并发能力是足够强大的,但是Ubuntu默认安装的是Prefork模式下的Apache.所以导致很多人后面盲目的去 安装lighttpd或者nginx一类替代软件.但是这类软件有一 ...
- [转]asp.net使用uploadify上传出现的IO Error问题
原文链接:http://blog.csdn.net/w3031213101/article/details/6335878 解决方法:1.uploadify控件的自定义size必须调整大小,即属性:s ...
- poj 1611 The Suspects(第一道并查集)
题意: 有N个学生,编号为0-n-1,现在0号学生感染了非典,凡是和0在一个社团的人就会感染, 并且这些人如果还参加了别的社团,他所在的社团照样全部感染,社团个数为m,求感染的人数. 输入: n代表人 ...
- OSG3.2+Qt5.2.1+VS2012+OSGEarth 2.5编译问题记录
问题1:CMake Error at D:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake: ...
- HandleErrorAttribute只能处理httpStatusCode为500的异常(服务器异常)
HandleErrorAttribute源代码: [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited ...
- css总结11:css的overflow问题
1 排版时经常遇到块级元素内容overflow,怎么妥当处理是一个关键. overflow的常用属性: 代码: <!DOCTYPE html><html lang="en ...
- 如何恢复VS2013代码实时校验功能
VS2013在某一天突然无法进行实时代码校验了,只有在编译的时候,错误列表才显示语法错误 怎么来解决这个问题呢?试试环境重置吧. 首先:打开工具菜单,选择“导入和导出设置”. 其次:可以先导出选定 ...
- ToastUtils
public class ToastUtils { private static String TAG="ToastUtils"; private static Toast toa ...
- 关于对SwfUpload的改造
Swfupload 在普通上传下,对于IE chrome firefox等有很好的兼容性. 但一旦与其他控件组合,很容易出现无法上传,帮顶事件丢失的情况. 例如Layer与Swfupload,上传一个 ...
- C#转java
懂C#的话,转Java也不是那么难,毕竟,语言语法还是相似的.尝试了下Java,说说自己的体会吧. 一,Java和C#都是完全面向对象的语言.在面向对象编程的三大原则方面,这两种语言接近得不能再接近. ...