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

在线等,学习问题
public   <T>   T[]   toArray(T[]   a)   {   //将聚集中的元素,转换为指定类型的数组
int   size   =   size();
if   (a.length   <   size)   //当指定数组长度小于聚集中元素的数目时,创建指定类型的数组
a   =   (T[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(),   size);
//利用java的反射机制,根据输入数组的类型,创建和聚集相同容量的指定类型的数组
//然后将聚集中的内容,利用iterator接口将其放入数组中
Iterator <E>   it=iterator();
Object[]   result   =   a;//这里为什么创建一个等于a的数组引用,直接使用a去操作不是一样吗?
for   (int   i=0;   i <size;   i++)
result[i]   =   it.next();
if   (a.length   >   size)   a[size]   =   null;   //这是干什么的啊?仔细想想吧!有什么问题吗
return   a;
}

------解决方案--------------------
这应该Collection接口的 toArray <T[] a> 方法
size()方法与之对应!
这样就很容易理解了!