Arrays.asList 返回數組而非List
List的一個典型的特性就是其長度是可變的,我們可以很方便地對它進行插入和刪除元素的操作,這是它與數組所存在的一個很大的區別,後者的長度是固定的,而且我們不能從數組中刪除元素,只能修改元素的值。
利用Arrays.asList(array)返回一個List,然而這個返回的是只讀的List不支持add和remove的操作。 JDK文檔是這麼說的:
public static <T> List<T> asList(T... a) 返回一個受指定數組支持的固定大小的列表。(對返回列表的更改會“直接寫”到數組。)此方法同 Collection.toArray() 一起,充當了基於數組的 API 與基於 collection 的 API 之間的橋梁。返回的列表是可序列化的,並且實現了 RandomAccess。此方法還提供了一個創建固定長度的列表的便捷方法,該列表被初始化為包含多個元素: List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
可以看出這是對數組的一個簡單包裝,提供了一個可按照List方式訪問的外殼而已,其本質還是數組。在.net中,Array和List都實現IList接口,當我們通過IList接口來訪問一個數組時其實就與訪問Arrays.asList(array)所返回的List是一樣的。
至於JDK裡說可以用來創建固定大小的List,我暫時還不知道在哪種情況下適用。