記錄一次Array轉換為List遇到的問題

不會真有人不學習吧發表於2020-11-24

今天在寫一個Array轉換為List的Demo的時候遇到了一個問題:

        String [] str = {"a","b","c"};
        List<String> list2 =  Arrays.asList(str);
        list2.add("ddd");
        System.out.println(list2);

最開始我是這樣寫的,發現list無法進行add,remove等操作

改進:

        String [] str = {"a","b","c"};
        List<String> list = new ArrayList<>( Arrays.asList(str));
        list.add("ddd");
        System.out.println(list);

原因:

Arrays.asList()方法返回的物件是Arrays的內部類,對list的操作仍然反映在原陣列上,因此這個list是定長的,不支援add、remove操作;

這個ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList

它是Arrays類自己定義的一個靜態內部類,這個內部類沒有實現add()、remove()方法,而是直接使用它的父類AbstractList的相應方法。

而AbstractList中的add()和remove()是直接丟擲java.lang.UnsupportedOperationException異常的!

相關文章