A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ztwztw 中级黑马   /  2014-1-3 09:33  /  1107 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
                        }
}

3 个回复

倒序浏览
()里面是指定数组类型,把list中的元素封装成指定类型的数组,如果把上面那句改成Integer[] arr = (Integer[])list.toArray();会发生类型转换异常。
回复 使用道具 举报
List转换成数组可以使用List的toArray方法,返回一个Object数组。
数组转换成List可以使用Arrays的asList静态方法,得到一个List。
括号里面的意思就是指你返回的数组类型是Integer类型的
如果只写list.toArray(),需要类型强转,返回类型是Object[]
如果写list.toArray(new Integer[list.size]),就不用类型强转了,返回类型是Integer[]
回复 使用道具 举报
list.toArray(new Integer[list.size()]);
<T> T[] toArray(T[] a)
带参数的toArray,返回的数组类型,是参数中数组的类型。就是规定好了,数组中存放的是什么类型的数据。不用强转。如果参数中的数组规定了数组长度,返回的数组长度,就是参数中数组规定好的长度。
如果指定数组能容纳列表(调用该方法的集合所有元素),则在其中返回该列表。
否则,分配具有指定数组的运行时类型和此列表大小的新数组。
如果指定数组能容纳列表,并剩余空间(即数组的元素比列表的多),那么会将数组中紧随列表尾部的元素设置为 null。(只有 在调用者知道列表不包含任何 null 元素时此方法才能用于确定列表的长度)。

Object[] toArray()
不带参数的toArray,返回的数组类型,是Object,数组中存放的数据类型是Object,任意引用类型,需要强转,来明确存放的类型。
返回的数组长度,正好可以放下调用者,就是调用这个方法的集合对象的所有元素。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马