使用asList 不能进行add(),remove()操作,如何解决?
来源:互联网 发布:sql数据库管理下载 编辑:程序博客网 时间:2024/06/01 07:36
问题情形:
使用List<Integer> temp = Arrays.asList(1,2,3,4,5);
Iterator<Integer> it = temp.iterator();
while(it.hasNext()){
System.out.println(it.next());
it.remove();
}
结果: 编辑时不报错,但是执行时报错!
Exception in thread "main" java.lang.UnsupportedOperationException
原因: Arrays.asList方法返回的ArrayList是继承自AbstractList同时实现
了RandomAccess和Serializable接口,定义如下:
AbstractList这个类的定义:
这时我们发现AbstractList这个类的set add remove方法定义如下:
List<Integer> temp = Arrays.asList(1,2,3,4,5);
temp.set(3, 6);
List<Integer> list = new ArrayList<Integer>(temp);
这样就可以在list中进行add() 和remove()的操作;
有些同学认为是temp是只读的,但是使用set();方法对指向index的元素进行修改也是可以的。
-------------------------------
阅读全文
0 0
- 使用asList 不能进行add(),remove()操作,如何解决?
- Arrays.asList方法返回的List不能执行add、remove操作
- # Arrays.asList 返回的list 不能使用 add,set,remove 方法
- Arrays.asList() 返回的list不能add,remove
- Arrays.asList() 返回的list不能add,remove
- Arrays.asList不能remove、add等,抛UnsupportedOperationException
- 为什么Arrays.asList(T...t)不能add和remove?
- Arrays.asList()为什么不能支持add()和remove()
- Arrays.asList()返回的List不能add和remove
- 解决Arrays.asList不能用add或remove
- 关于 Arrays.asList add、remove 操作的 UnsupportedOperationException
- Arrays.asList() 返回的list不能add,remove以及慎用java.util.Collections.copy()方法
- Arrays.aslist新建的list集合不能add(),set(),remove()你知道吗?
- Arrays.asList的到的List进行remove操作报java.lang.UnsupportedOperationException
- List进行remove和add操作时缘何会报UnsupportedOperationException
- foreach循环里进行元素的remove/add操作
- 从源码角度分析Arrays.asList返回的集合不能进行增删操作。
- 不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁
- jsp中计算时间(年月日 时分秒)
- LeetCode 648. Replace Words 字典树练习
- portaudio使用笔记
- recompiled header file is from a previous version of the compiler, or the precompiled header is C++
- 函数名,函数名取地址,函数名取值之间的区别
- 使用asList 不能进行add(),remove()操作,如何解决?
- 第一章:1.2.3 LTI系统研究方法与本章小结
- openstack storlets 文档(一)
- 数字转汉字算法
- 学会制作柱形图,一眼区分工作效率差异
- MySQL创建用户与授权方法
- 141. Linked List Cycle
- 特征处理实践
- NYOJ【74】小学生算术【数学】