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,我暂时还不知道在哪种情况下适用。