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

    结果如下:

    劈天造陆,开辟属于自己的天地!!!与君共勉
  • 相关阅读:
    Matlab 基础
    C# 基础
    Linux Shell
    【Luogu3381】【模板】缩点
    KMP学习笔记
    品味题目的味道
    【NOI2015】【BZOJ4196】软件包管理器
    宝藏
    状态压缩动态规划
    第一篇随笔
  • 原文地址:https://www.cnblogs.com/java-spring/p/15308721.html
Copyright © 2011-2022 走看看