1. 程式人生 > >Arrays.asList()方法

Arrays.asList()方法

首先,Arrays.asList()方法是將陣列轉化為list,有以下幾點需要注意:

  (1)該方法不適用於基本資料型別(byte,short,int,long,float,double,boolean)

  (2)該方法將陣列與列表連結起來,當更新其中之一時,另一個自動更新

  (3)不支援add和remove方法

另外,在java語言中,把陣列轉換成List集合,有個很方便的方法就是 List<String> list = Arrays.asList("a","b","c");

但你可能不知道這樣得到的List它的長度是不能改變的。當你向這個List新增或刪除一個元素時(例如 list.add("d");)程式就會丟擲異常(java.lang.UnsupportedOperationException)。怎麼會這樣?!只需要看看asList()方法是怎麼實現的就行了。

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

當你看到這段程式碼時可能覺得沒啥問題啊,不就是返回了一個ArrayList物件嗎?問題就出在這裡。這個ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList,顯然它是Arrays類自己定義的一個內部類!這個內部類沒有實現add()、remove()方法,而是直接使用它的父類AbstractList的相應方法。而AbstractList中的add()和remove()是直接丟擲java.lang.UnsupportedOperationException異常的!

總結一下吧,如果你的List只是用來遍歷,就用Arrays.asList()吧!如果你的List還要新增或刪除元素,還是乖乖地new一個java.util.ArrayList,然後一個一個的新增元素吧!

轉自:https://www.cnblogs.com/shanheyongmu/p/6364320.html
           https://blog.csdn.net/keketrtr/article/details/47108435