工具類Arrays.asList()方法把數組轉換成集合


工具類Arrays.asList()方法把數組轉換成集合

不能使用其修改集合相關的方法,它的add/remove/clear方法會拋出UnsupportedOperationException()

問題分析:

1、測試

 

 

被注釋的三行可以分別解開注釋,運行后確實出現了上述所說的異常

2、看源碼

 

 

似乎沒有問題、往下看

 

 

然而實際上我們點進到ArrayList發現,其實ArrayList並不是我們平時用的ArrayList。而是Arrays里面的一個內部類。而且這個內部類沒有add,clear,remove方法,所以拋出的異常其實來自於AbstractList。

 

 

點進去就會發現拋出異常的地方,clear底層也會調用到remove所以也會拋出異常。

總結:

1、Arrays.asList()不要亂用底層其實還是數組

2、如果使用了Arrays.asList()的話最好不要使用其集合的操作方法

3、List list = new ArrayList<>(Arrays.asList("a", "b", "c"))可以在外面這樣包一層真正的ArrayList


免責聲明!

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



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