先列举一下我们需要的api:
java.util.Collection接口中:
toArray
Object[] toArray()
- 返回包含此 collection 中所有元素的数组。如果 collection
对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。
返回的数组将是“安全的”,因为此 collection 并不维护对返回数组的任何引用。(换句话说,即使 collection 受到数组的支持,此方法也必须分配一个新的数组)。因此,调用者可以随意修改返回的数组。
此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。
-
-
- 返回:
- 包含此 collection 中所有元素的数组
java.util.Arrays类中:
asList
public static <T> List<T> asList(T... a)
- 返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同
Collection.toArray()
一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了RandomAccess
。此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
-
- 参数:
-
a
- 支持列表的数组。 - 返回:
- 指定数组的列表视图。
这里面需要注意的问题还是很多的
一、int[] 无法转换成列表 因为aslist方法无法将基本类型转制保证成类,所以你要讲数组声明为Integer
看代码:
Integer[] num = {2,3,4}; int[] num1 = {2,3,4}; List<Integer> l = Arrays.asList(num); List<int[]> l1 = Arrays.asList(num1);
Integer[] 可以正确传入,但是int[] 就不行,因为其内部不会自动包装,这个非常值得注意
二、aslist返回的是视图,而toarray返回的是一个副本
所谓视图是修改会被映射到原结构!
三、用aslist映射的列表只能增加和删除。参照:http://www.cnblogs.com/zolra/archive/2011/03/02/1969235.html