Array.asList()注意


api:

public static <T> List<T> asList(T... a)
返回一個受指定數組支持的固定大小的列表。(對返回列表的更改會“直接寫”到數組。)此方法同  Collection.toArray() 一起,充當了基於數組的 API 與基於 collection 的 API 之間的橋梁。返回的列表是可序列化的,並且實現了  RandomAccess

此方法還提供了一個創建固定長度的列表的便捷方法,該列表被初始化為包含多個元素:

     List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
 
參數:
a - 支持列表的數組。
返回:
指定數組的列表視圖。

遇到的問題:

java.lang.UnsupportedOperationException

在使用Arrays.asList()后調用add,remove這些method時出現 java.lang.UnsupportedOperationException異常。

 

原因:

這是由於Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。

Arrays$ArrayList和ArrayList都是繼承AbstractList,remove,add等 method在AbstractList中是默認throw UnsupportedOperationException而且不作任何操作。

ArrayList override這些method來對list進行操作,但是Arrays$ArrayList沒有override remove(),add()等,所以throw UnsupportedOperationException。

 

 

解決辦法:

String[] arr ={"a","b","c"};

List<String> list = Arrays.asList(arr);  

List<String> arrList = new ArrayList<String>(list);

 


免責聲明!

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



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