日期:2014-05-20  浏览次数:20572 次

toArray 问题
Java code
List<String> c = new ArrayList<String>();
        c.add("aa");
        c.add("bb");
        String[] strs = c.toArray(new String[c.size()]);
                String[] sss = c.toArray(new String[0]);
        for(String s:strs){
            System.out.println(s);
        }


toArray(参数),这个参数为什么new String[0]会产生c同样大的数组呢?比如c里面有10个元素,那么strs和sss是一样的,为什么会这样呢

------解决方案--------------------
toArray源码其实比较了下size,小于strs的length的话,就new一个strs length的一个新数组

lz看下源码就知道了。
------解决方案--------------------
恩,是这样的.<T> T[] t.toArray(T[] a) 他会比较t大小和a.大小.
如果t的大小>a.length,则以t的大小为准;
如果t的size<a.length;则以a.length为准,先copy t到数组,(a.length-t.size)后的每一项为null;
如果t.size==a.length ,则copy t到数组。