Arrays.asList()不能使用add和remove方法


 問題:

public class App {
    public static void main(String[] args) {
        String str = "212,12,12,dsd,dsds,ds";
        List<String> list = Arrays.asList(str.split(","));
        list.add("6565");
        System.out.println("運行報錯!");
    }
}

Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at App.main(App.java:13)

解決:

    public static void main(String[] args) {
        String str = "212,12,12,dsd,dsds,ds";
        List<String> list = new ArrayList<>(Arrays.asList(str.split(",")));
        list.add("6565");
        System.out.println("運行OK!");
    }

原因:

Arrays.asList()返回的ArrayList繼承自AbstractList,它僅支持那些不會改變數組大小的操作,所以任何對底層數據結構的尺寸進行修改的方法都會出現異常,Arrays.asList()返回固定尺寸的List。

 

 

 


免責聲明!

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



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