1. 程式人生 > >Arrays.asList()陣列轉換成List集合

Arrays.asList()陣列轉換成List集合

在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,然後一個一個的add()新增元素吧!