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() 【快查询】。
原文:http://www.cnblogs.com/one-lightyear/p/7513013.html