黑马程序员技术交流社区

标题: [哈尔滨校区]关于集合和数组之间的转换的知识 [打印本页]

作者: dawei    时间: 2016-2-28 13:47
标题: [哈尔滨校区]关于集合和数组之间的转换的知识
本帖最后由 dawei 于 2016-2-28 13:47 编辑

Arrays工具类的asList(T ... t):将数组转成集合(该方法用的可变参数)
                注意:
                        1)返回一个长度固定的集合 可以改和查 不能增和删,也就是改变其长度的操作都不可以做
                        2)将数组转换成集合,数组必须是引用数据类型
                代码演示:
                public static void demo2() {
                        /*
                        int[] arr = {11,22,33,44,55};                        
                        List<int[]> list = Arrays.asList(arr);        //基本数据类型的数组转换成集合,会将整个数组当作一个对象转换
                        System.out.println(list);                //[[I@1833eca]
                        */
                        Integer[] arr = {11,22,33,44,55};        //将数组转换成集合,数组必须是引用数据类型
                        List<Integer> list = Arrays.asList(arr);
                        //list.add(66);                                //编译不报错 ,运行报错

java.lang.UnsupportedOperationException
                        //list.remove(55);                        //编译不报错 ,运行报错

java.lang.UnsupportedOperationException
                        list.set(0,66);                                //不报错,不改变其长度的操作 可以执行
                        System.out.println(list.get(0));        //66        不报错,不改变其长度的操作 可以执行
                        System.out.println(list);                //[66,22,33,44,55]
                }

         Collection中toArray(T[] a)泛型版的集合转数组:T[] 明确成什么样的数组 toArray(T[] a)方法就返回什么类型的数组
                注意:当集合转换数组时,数组长度如果是小于等于集合的size时,转换后的数组长度等于集合的size
                        如果数组的长度大于了size,分配的数组长度就和你指定的长度一样

                代码演示:
                public static void main(String[] args) {
                        
                        ArrayList<String> list = new ArrayList<>();
                        list.add("a");
                        list.add("b");
                        list.add("c");
                        list.add("d");
                        
                        //不加泛型的toArray()  只能返回Object[]  
                        Object[] objs = list.toArray();
                        for (Object obj : objs) {
                                System.out.println(obj);
                        }

                        //如果想指定返回数组的类型 请用加泛型的集合转数组
                        String[] arr = list.toArray(new String[list.size()]);        //参数传入什么类型的数组 就返回什么类型的数

组        
                                                                                //当集合转换数组时,数组长度如果是小于等于集

合的size时,转换后的数组长度等于集合的size
                                                                                //如果数组的长度大于了size,分配的数组长度就

和你指定的长度一样
                        for (String string : arr) {
                                System.out.println(string);
                        }
        }





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2