不少時候,你會以爲數組使用方便,有些時候你會以爲集合使用更加方便,大家對於集合和數組的轉換那就在所不免了,下面總結一下數組與集合的轉換。java
1)網上解釋數組
在使用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並且不做任何操做。dom
ArrayList override這些method來對list進行操做,可是Arrays$ArrayList沒有override remove(),add()等,ide
因此 throw UnsupportedOperationException。
單元測試
2)官方文檔測試
public static <T> List<T> asList(T... a)url
返回一個受指定數組支持的固定大小的列表。(對返回列表的更改會「直接寫」到數組。)此方法同 Collection.toArray() 一塊兒,充當了基於數組的 API 與基於 collection 的 API 之間的橋樑。返回的列表是可序列化的,而且實現了 RandomAccess。spa
此方法還提供了一個建立固定長度的列表的便捷方法,該列表被初始化爲包含多個元素:繼承
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");ci
3)單元測試
List<String> temp = Arrays.asList(str.split(","));
對於temp是不能進行remove 和 add 操做的,可是能夠執行其餘的操做,諸如 contains 等
4)問題解決
List<String> list = new ArrayList<String>();
List<String> temp = Arrays.asList(str.split(","));
list.addAll(temp);
等價於
List<String> list = new ArrayList<String>(Arrays.asList(str.split(",")));
5)數組不能直接轉爲數組,能夠經過轉爲List方式,而後經過Set的構造方法轉爲Set
new HashSet(Arrays.asList(a));
1)List集合轉爲數組,採用list.toArray(T[] a);
從他的源碼中能夠知道,對於傳入參數的長度不一樣對返回值也是有影響的;因此最好這樣寫:
a = list.toArray(T[] a);
2)Set集合轉爲數組,採用set.toArray(T[] a);
和上面道理一致。