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。这样就可以正常操作了

    结果如下:

    劈天造陆,开辟属于自己的天地!!!与君共勉
  • 相关阅读:
    automaticallyAdjustsScrollViewInsets
    Quartz 2D绘图
    手势识别
    多视图控制器跳转方法
    NSString和NSDate的转换
    遍历子视图中某个类型控件方法
    发布程序后的NSLog批处理
    searchDisplayController用法
    UIImagePickerController使用方法
    沙盒目录常用获取方式
  • 原文地址:https://www.cnblogs.com/java-spring/p/15308721.html
Copyright © 2011-2022 走看看