- 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到数组。