Arrays.asList使用
2016-09-13 16:59
281 查看
Arrays是java.util提供的一个操作数组的工具类,里面有很多使用的方法,我们来看一个比较常用的asList(),
测试代码:
输出结果:
**1
2**
这个方法使用起来简化了许多操作,使用也比较方便,但是随之也带来了一些问题。如下
输出结果:
竟然抛出了一个异常,看编写的代码感觉没有问题,但是为什么一个简单的add()操作会抛出一个“不支持操作”的异常呢,下面我们来看一下源码。一谈究竟
此时的arraylist还是List的实现类,AbstractList的子类,断点继续向下走。
此时arraylist已经边成了Arrays的一个内部类,AbstractList的子类,并且返回的只是定长的String数组,无法改变长度。
下面是AbstractList抽象类定义的add方法,并没有做具体实现只是抛出了一个异常,
总结:由于Arrays的内部累ArrayList并没有重写父类AbstractList的add方法,所以调用的是父类AbstractList的add方法,AbstractList并没有对add方法做重写,
romove方法跟add方法一样,都是没有重写父类的方法,
可以通过new ArrayList(arraylist),转换为ArrayList操作。
public static <T> List<T> asList(T... a) { return new ArrayList<>(a); }
测试代码:
public static void main(String[] args) { List<String> arraylist=new ArrayList<String>(); arraylist=Arrays.asList("1","2"); for(String s : arraylist){ System.out.println(s); } }
输出结果:
**1
2**
这个方法使用起来简化了许多操作,使用也比较方便,但是随之也带来了一些问题。如下
public static void main(String[] args) { List<String> arraylist=new ArrayList<String>(); arraylist=Arrays.asList("1","2"); arraylist.add("3");//向arraylist增加数据 for(String s : arraylist){ System.out.println(s); } }
输出结果:
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at com.test.ThinkInJava.listImpl.TestList.main(TestList.java:14)
竟然抛出了一个异常,看编写的代码感觉没有问题,但是为什么一个简单的add()操作会抛出一个“不支持操作”的异常呢,下面我们来看一下源码。一谈究竟
此时的arraylist还是List的实现类,AbstractList的子类,断点继续向下走。
此时arraylist已经边成了Arrays的一个内部类,AbstractList的子类,并且返回的只是定长的String数组,无法改变长度。
下面是AbstractList抽象类定义的add方法,并没有做具体实现只是抛出了一个异常,
public boolean add(E e) { add(size(), e); return true; } public void add(int index, E element) { throw new UnsupportedOperationException(); }
总结:由于Arrays的内部累ArrayList并没有重写父类AbstractList的add方法,所以调用的是父类AbstractList的add方法,AbstractList并没有对add方法做重写,
romove方法跟add方法一样,都是没有重写父类的方法,
可以通过new ArrayList(arraylist),转换为ArrayList操作。
相关文章推荐
- Arrays.asList的使用及异常问题
- Arrays.asList()使用---导致java.lang.UnsupportedOperationException分析
- 浅谈Arrays.asList()方法的使用
- Arrays.asList获取的list不可以直接使用remove
- java.util.Arrays.asList使用体会
- Arrays.asList方法总结 && Android控件中文粗体的使用
- Arrays.asList()方法的使用
- 浅谈Arrays.asList()方法的使用
- Arrays类——Arrays.asList()方法使用
- Java-Arrays.asList()使用中的问题
- Arrays.asList的使用及异常问题
- 使用Collections.addAll还是Arrays.asList生成List,当修改原始数据时,均会影响到List里的数据
- Arrays.asList的使用及异常问题
- java.util.Arrays.asList使用需要注意的地方
- Arrays.asList()方法使用
- Arrays.asList使用
- java.util.Arrays.asList使用体会
- 谨慎使用Arrays.asList()
- java使用Arrays asList需要注意了
- 【Java集合的详细研究2】浅谈Arrays.asList的使用