javalangUnsupportedOperationException.docx

上传人:牧羊曲112 文档编号:3159515 上传时间:2023-03-11 格式:DOCX 页数:3 大小:37.24KB
返回 下载 相关 举报
javalangUnsupportedOperationException.docx_第1页
第1页 / 共3页
javalangUnsupportedOperationException.docx_第2页
第2页 / 共3页
javalangUnsupportedOperationException.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《javalangUnsupportedOperationException.docx》由会员分享,可在线阅读,更多相关《javalangUnsupportedOperationException.docx(3页珍藏版)》请在三一办公上搜索。

1、javalangUnsupportedOperationExceptionjava.lang.UnsupportedOperationException(不支持操作异常) package com.test; import java.util.Arrays; public class aa public static void main(String args) / TODO Auto-generated method stub String str=1,2,3,4,5,6,7,8,9,0; java.util.List list=Arrays.asList(str.split(,); Syst

2、em.out.println(-1-); list.remove(0); System.out.println(-2-); 异常消息: -1- Exception in thread main java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at java.util.AbstractList$Itr.remove(AbstractList.java:374) at java.util.AbstractCollection.remove(Abstract

3、Collection.java:291) at com.test.aa.main(aa.java:12) 解决方案: package com.test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class aa public static void main(String args) / TODO Auto-generated method stub String str=1,2,3,4,5,6,7,8,9,0; java.util.List list=Arrays.a

4、sList(str.split(,); /解决方案 List list2=new ArrayList; for(String str2 :str.split(,) list2.add(str2); System.out.println(-1-); / list.remove(0); list2.remove(0); System.out.println(-2-); 输出结果: -1- -2- 解析原理: 使用Arrays.asList后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于: Arrays.as

5、List 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException。 解决方

6、法是使用Iterator,或者转换为ArrayList List list = Arrays.asList(a); List arrayList = new ArrayList(list); AbstractCollectionimplements List此类提供 List 接口的骨干实现,以最大限度地减少实现“随机访问”数据存储支持的该接口所需的工作。对于连续的访问数据,应优先使用 AbstractSequentialList,而不是此类。 要实现不可修改的列表,编程人员只需扩展此类,并提供 get(int) 和 size 方法的实现。 要实现可修改的列表,编程人员必须另外重写 set(int, E) 方法。如果列表为可变大小,则编程人员必须另外重写 add(int, E) 和 remove(int) 方法。 按照 Collection 接口规范中的建议,编程人员通常应该提供一个 void和 collection 构造方法。 与其他抽象 collection 实现不同,编程人员不必 提供迭代器实现;迭代器和列表迭代器由此类在以下“随机访问”方法上实现:get(int)、set(int, E)、add(int, E) 和 remove(int)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号