zoukankan      html  css  js  c++  java
  • Arrays.asList () 不可添加或删除元素的原因

    Java中奖数组转换为List<T>容器有一个很方便的方法 Arrays.asList(T ... a),我通过此方法给容器进行了赋值操作,接着对其进行 添加元素,却发现会抛出一个(java.lang.UnsupportedOperationException)异常。

    看了一下源码:

    public static <T> List<T> asList(T... a) {
        return new ArrayList<T>(a);
        }

      定位到 ArrayList 内中,发现其实Arrays 的内部类,并且继承了AbstractList 类(abstract 类), 但并没有覆写 add() 方法,而是直接继承的。 查看 AbstractList 源码发现,其很多方法都要求在子类中进行覆写的,如果只继承的话,那么调用这些方法就会抛出一个异常。

    // AbstractList 中实现的 add 方法
    public boolean add(E e) {
        add(size(), e);
        return true;
        }
    
    public void add(int index, E element) {
        throw new UnsupportedOperationException();
        }

    如上,如果 在子类中单单是继承的话,调用add 方法就会抛出异常

      结论: 通过Arrays.asList(T ... a) 方法初始化List 容器,该容器的长度是不可改变的。所以如果你要是想在你的容器中添加或者删除元素的话,还是使用 LinkedList () 【快插入 ,快删除】 或者 ArrayList() 【快查询】。

  • 相关阅读:
    Ubuntu系统
    demo日常报错
    python 实现两个多维数组去重处理
    奔跑检测
    安装Win11如何绕过TPM2.0的安全限制?
    Nginx的Rewrite
    gvim 配置
    Tokyo Cabinet和Tokyo Tyrant及PHP扩展包的安装
    fm rf 删除 恢复
    提高页面loadtime的几个方法
  • 原文地址:https://www.cnblogs.com/one-lightyear/p/7513013.html
Copyright © 2011-2022 走看看