当把数组变为集合时候,需要工具类Arrays.asList(T);
public static <T> List<T> asList(T... a)
Collection.toArray()
. The returned list is serializable and implements
RandomAccess
.
This method also provides a convenient way to create a fixed-size list initialized to contain several elements:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
int[] k ={1,2,3,4,5};
List<int[]> list = Arrays.asList(k);//数组变集合
for(Object obj:list){
System.out.println(obj.toString());
//123 4
}
此时打印出来的为地址值,而且就一个值 !不应该啊!为什么int[] 里的元素没有变成数组。
注意到没有 List<int[]>泛型 为数组所有 集合的基本元素也就是一个数组 打印数组对象就是他的地址值
当把int[]变为int 就会报错。
现在我们把int改为Integer 试一试
Integer[] i ={1,2,3,4,5};
List<Integer> list = Arrays.asList(i);//数组变集合
for(Object obj:list){
System.out.println(obj.toString());
//123 4
}
此时编译通过了 而且不报错 List<Integer> 但是i却是 Integer[] 这个 而且打印出来的也是一个包含i数组元素的集合
有没有发觉 int[]基本类型数组 ,是作为一个元素处理。 但是 引用数据类型数组 却作为整个集合的内容处理。
也就是说引用数据类型数组 可以名副其实的由数组变成集合,这个正是我们想要的。
这个方法的参数 是可变参数 现在看看 在添加一个引用集合会把两个数组变为集合吗??
Integer[] i ={1,2,3,4,5};
Integer[] j = {1,2,3,4,5,6};
List<Integer> list = Arrays.asList(i,j);//数组变集合
此时报错了 Integer需要 变为Integer[],也就是说和我们的int[] 一样了,把数组变为了集合里的元素了。
现在总结一下
如果想把数组转为集合
1.首先必须是引用数据类型
2.其次传递的参数应该是一个 而且是一个引用类型的数组。