关于Arrays.asList的问题
2012-03-20 21:01
267 查看
将数组转成List问题,通常我们习惯这样写成:List<String> list = Arrays.asList("1","2");
于是我们这样就得到了一个list,但是这个List的实现类是java.util.Arrays.ArrayList这个类(而不是java.util.ArrayList)。
剖析JDK源代码可以发现,java.util.Arrays.ArrayList(就是转换出来list)它是继承了java.util.AbstractList这个类。
再来看看java.util.AbstractList类是啥样子的?可以发现
public E set(int index, E element)
public E set(int index, E element)
public E remove(int index)
public void add(int index, E element) | public boolean add(E e)调用add(int index, E element)
以上方法的实现全部是抛出UnsupportedOperationException异常。
因此有Arrays.asList转换出来的List他其实是一个AbstractList,他可以像List一样访问,但是不可其做任何修改操作。
这也说明了,为什么Arrays.asList出来的List,对其做add、remove操作为抛出UnsupportedOperationException异常,从JDK代码角度上,原因在此。
换句话说,其实java.util.Arrays.ArrayList其实只是对数组做了一个装饰,可以看到里面的实现,E get(int index)、E set(int index, E element)等方法都是对数组的操作,他的目的只是提供了可以像访问List那样来访问数组而已。本质上其实还是一个数组。
http://cst.is-programmer.com/categories/5476/posts
于是我们这样就得到了一个list,但是这个List的实现类是java.util.Arrays.ArrayList这个类(而不是java.util.ArrayList)。
剖析JDK源代码可以发现,java.util.Arrays.ArrayList(就是转换出来list)它是继承了java.util.AbstractList这个类。
再来看看java.util.AbstractList类是啥样子的?可以发现
public E set(int index, E element)
public E set(int index, E element)
public E remove(int index)
public void add(int index, E element) | public boolean add(E e)调用add(int index, E element)
以上方法的实现全部是抛出UnsupportedOperationException异常。
因此有Arrays.asList转换出来的List他其实是一个AbstractList,他可以像List一样访问,但是不可其做任何修改操作。
这也说明了,为什么Arrays.asList出来的List,对其做add、remove操作为抛出UnsupportedOperationException异常,从JDK代码角度上,原因在此。
换句话说,其实java.util.Arrays.ArrayList其实只是对数组做了一个装饰,可以看到里面的实现,E get(int index)、E set(int index, E element)等方法都是对数组的操作,他的目的只是提供了可以像访问List那样来访问数组而已。本质上其实还是一个数组。
http://cst.is-programmer.com/categories/5476/posts
相关文章推荐
- Java 关于使用Arrays.asList()数组转集合的问题
- java Arrays.asList com.google.common.collect.Lists.newArrayList 效率问题
- Arrays.asList(T...a)的使用问题
- java.util.Arrays.asList 的小问题
- Arrays.asList传入参数的问题
- 关于 ArrayList.toArray() 和 Arrays.asList().toArray()方法
- java.util.Arrays.asList 的小问题
- java.util.Arrays.asList 的小问题
- Arrays.asList问题
- Arrays.asList的使用及异常问题
- java.util.Arrays.asList 的小问题
- Arrays.asList的使用及异常问题
- java.util.Arrays.asList 问题
- java Arrays.asList 问题
- Java中关于Arrays.asList()的操作
- java.util.Arrays.asList 的小问题
- Arrays.asList()的删除问题
- 关于Arrays.asList()返回的ArrayList
- java.util.Arrays.asList 的小问题
- Java中的Arrays.asList(T... a)相关问题