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