黑马程序员技术交流社区
标题:
数组转集合的代码疑问[已解决]
[打印本页]
作者:
王自强
时间:
2012-9-1 00:16
标题:
数组转集合的代码疑问[已解决]
本帖最后由 王自强 于 2012-9-2 17:26 编辑
import java.util.*;
class test
{
public static void main(String[] args)
{
Integer[] nums = {2,4,5};
List<Integer> li = Arrays.asList(nums);
Iterator<Integer> it = li.iterator();
while(it.hasNext())
{
it.remove();//这里怎么错了?为什么不能进行删除操作?
}
}
}
复制代码
no增删.jpg
(14.37 KB, 下载次数: 13)
下载附件
2012-9-1 00:15 上传
为什么数组转集合后就不能对元素增删了呢?求解释...
作者:
袁艳超
时间:
2012-9-1 01:08
首先说明一下,Arrys.asList();方法返回的不是平常熟悉的java.util.ArrayList类的对象.
而是Arrays类的内部类的对象,而Arrays类里的内部类ArrayList也是实现AbstractList类.
remove,add等方法在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作.
ArrayList 覆盖这些方法来对list进行操作,但是Arrays类的内部类的对象没有覆盖remove(),add()等方法;
解决方法是使用Iterator,或者转换为ArrayList
List list= new ArrayList(li);
当没有调用过 next 方法,或者在上一次调用 next 方法之后已经调用了 remove 方法就会抛出java.lang.UnsupportedOperationException
作者:
芦曦
时间:
2012-9-1 01:43
List<Integer> li = Arrays.asList(nums);
你用的是Arrays类中的asList方法,asList得到的数组是没有添加和删除方法的。
作者:
王金科
时间:
2012-9-1 01:46
asList
public static <T> List<T> asList(T... a)
返回一个受指定数组支持的固定大小的列表
。(对返回列表的更改会“直接写”到数组。)此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。
此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
返回一个受指定数组支持的固定大小的列表
所以不能进行add()和remove()
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2