Arrays.asList () 不可添加或删除元素的原因

Posted 一光年太远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 类, 但并没有覆写 add() 方法。 查看 AbstractList 源码发现,其很多方法都要求在子类中进行覆写的,不然就会抛出一个 (java.lang.UnsupportedOperationException)异常。

 

 

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

以上是关于Arrays.asList () 不可添加或删除元素的原因的主要内容,如果未能解决你的问题,请参考以下文章

Arrays.asList(int [])不工作[重复]

Arrays.asList()方法注意事项

Arrays.asList()的踩坑

Arrays.asList() 不能正常工作?

集合1

使用Arrays.asList的优点和缺点