java - list 報java.lang.UnsupportedOperationException


情景

現在有個數組,比如:String[]  array = new String[]{"1","2","3"};

我們想要往這個數組中添加或刪除元素。

思路

我們知道,數組是沒有add,remote這些method的。

所以我們需要將數組轉換為list集合,list有這些功能啊,操作完之后,再將list轉換為數組即可。沒毛病!!

操作

public class test {
    public static void main(String[] args) {
        String[]  array = new String[]{"1","2","3"};
        List<String> list1 = Arrays.asList(array);
        // 我們想要的操作
        list1.add("4");
        list1.remove("1");
        // 操作結束后,再轉為數組
        Object[] array2 = list1.toArray();
        for(Object a: array2) {
            System.out.println(a);
        }
        
    }
}

這段代碼,看着沒毛病。運行~~~

在list1.add("4"); 這一步就報錯了。不支持這個操作。同樣,remove也不支持咯。

原因

Arrays.asList(String[])這種方式只能轉為Arrays$ArrayList類,Arrays$ArrayList和ArrayList都是繼承AbstractList,AbstractList類是不操作remove,add等method的,所以Arrays$ArrayList 也就不支持這些方法,默認throw UnsupportedOperationExceptiony異常。而ArrayList重寫了remove,add等method,所以可以使用這些方法。

修改

 1 public class test {
 2     public static void main(String[] args) {
 3         String[]  array = new String[]{"1","2","3"};
 4         List<String> list1 = Arrays.asList(array);
 5         List<String> list2 = new ArrayList<String>(list1);
 6         // 我們想要的操作
 7         list2.add("4");
 8         list2.remove("1");
 9         // 操作結束后,再轉為數組
10         Object[] array2 = list2.toArray();
11         for(Object a: array2) {
12             System.out.println(a);
13         }
14         
15     }
16 }

我們需要將Arrays$ArrayList類轉換為ArrayList類,再來進行操作。結束之后,轉為數組。查看結果

 

 兩個操作都成功了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM