zoukankan      html  css  js  c++  java
  • Arrays.asList()返回的集合不能进行add,remove等操作

    List<String> list = Arrays.asList(new String[]{"a", "b"});
    list.add("a");

    执行结果

    进行其他改变数组大小的操作,都会抛出这个异常 Exception in thread "main" java.lang.UnsupportedOperationException

    查看aslist方法源码

    首先看出,返回的ArrayList只是java.util.Arrays中的内部类,并不是java.util.ArrayList

    而且内部类ArrayList继承了AbstractList,但是并没有重写add,remove等方法,所以调用这些方法的时候调用的都是父类AbstractList中的方法。

    我们先看下平常使用的java.util包下的ArrayList中add方法

    我们看下父类AbstractList中的这些方法

     

    直接就会抛出异常

    所以Arrays.asList()返回的list仅支持那些不会改变集合大小的操作。

    如果要用的话,也可以如下使用:

    List<String> list = new ArrayList<>(Arrays.asList(new String[]{"a", "b"}));
    list.add("c");
    System.out.println(list);

    把Arrays.asList()的结果作为构造器的参数传递给任何Collection。这样就可以正常操作了

    结果如下:

    劈天造陆,开辟属于自己的天地!!!与君共勉
  • 相关阅读:
    java security
    java 反射 动态代理
    java 泛型
    angularjs编码实践
    angularjs 资源集合
    java 类的加载,链接,初始化
    java 伪共享
    java cpu缓存
    SpringMVC,Controller的返回页面类型以及路径设置默认值
    org.springframework.web.bind.annotation重定向的问题
  • 原文地址:https://www.cnblogs.com/java-spring/p/15308721.html
Copyright © 2011-2022 走看看