java数组转成集合整理

来源:互联网 发布:accp对比java那个好 编辑:程序博客网 时间:2024/05/29 12:24

当把数组变为集合时候,需要工具类Arrays.asList(T);

public static <T> List<T> asList(T... a)
Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.) This method acts as bridge between array-based and collection-based APIs, in combination withCollection.toArray(). The returned list is serializable and implementsRandomAccess.

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.其次传递的参数应该是一个 而且是一个引用类型的数组。


原创粉丝点击