黑马程序员技术交流社区

标题: 集合转换成元素 [打印本页]

作者: ztwztw    时间: 2014-1-3 09:33
标题: 集合转换成元素
private static void sort(List<Integer> list)
        {
                Integer[] arr = list.toArray(new Integer[list.size()]); /*集合转换成元素不是用list.Array();吗,()里面的是什么意思*/
                 selectSort(arr);   
                for(int j = 0;j<arr.length;j++)
                        list.add(arr[j]);
               
               
        }
        //选择排序
                        public static void selectSort(Integer[] arr )
                        {
                                int j;
                                for(int i=0;i<arr.length-1;i++)
                                        for(j=i+1;j<arr.length;j++)
                                                if(arr[i]>arr[j])
                                                        swap(arr,i,j);
                        }
                        public static void swap(Integer[] arr,int i,int j)
                        {
                                Integer tem = arr[i];
                                arr[i] = arr[j];
                                arr[j] = tem;
                        }
}
作者: 孩子也孤单    时间: 2014-1-3 10:40
()里面是指定数组类型,把list中的元素封装成指定类型的数组,如果把上面那句改成Integer[] arr = (Integer[])list.toArray();会发生类型转换异常。
作者: 嘿╰_╯往哪里跑    时间: 2014-1-3 11:58
List转换成数组可以使用List的toArray方法,返回一个Object数组。
数组转换成List可以使用Arrays的asList静态方法,得到一个List。
括号里面的意思就是指你返回的数组类型是Integer类型的
如果只写list.toArray(),需要类型强转,返回类型是Object[]
如果写list.toArray(new Integer[list.size]),就不用类型强转了,返回类型是Integer[]

作者: 其LovE斤    时间: 2014-1-3 13:44
list.toArray(new Integer[list.size()]);
<T> T[] toArray(T[] a)
带参数的toArray,返回的数组类型,是参数中数组的类型。就是规定好了,数组中存放的是什么类型的数据。不用强转。如果参数中的数组规定了数组长度,返回的数组长度,就是参数中数组规定好的长度。
如果指定数组能容纳列表(调用该方法的集合所有元素),则在其中返回该列表。
否则,分配具有指定数组的运行时类型和此列表大小的新数组。
如果指定数组能容纳列表,并剩余空间(即数组的元素比列表的多),那么会将数组中紧随列表尾部的元素设置为 null。(只有 在调用者知道列表不包含任何 null 元素时此方法才能用于确定列表的长度)。

Object[] toArray()
不带参数的toArray,返回的数组类型,是Object,数组中存放的数据类型是Object,任意引用类型,需要强转,来明确存放的类型。
返回的数组长度,正好可以放下调用者,就是调用这个方法的集合对象的所有元素。




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