首先,toArray(T[] a)方法的参数是一个数组,你给它传入什么类型的数组,它返回的就是什么类型的数组,
数组的长度是固定的,既然是新建数组,数组的容量大小在创建时必须指定,所以[]中必须有数字,但不一定是0;
toArray(T[] a)的方法体如下:
public <T> T[] toArray(T[] a) {
if (a.length < size)
// Make a new array of a's runtime type, but my contents:
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
和楼主知道的一样:
当指定类型的数组长度小于集合的size,那么该方法内部会创建一个新的数组,长度为集合的size,并且把数据拷贝一遍;
当指定类型的数组长度大于集合的size,就不会新创建新数组了,而是使用传递进来的数组,只不过是将数组中紧跟在集合末尾的元素设置为 null;
综上就可以看出,
当做参数传入进去的 新建数组,长度小于集合的size效率是低的,
长度是刚刚好 ,还是大于集合的size,没多大区别,取决于它返给你的数组,你是否还要对其进行操作
如果你还要对返回的数组进行添加,那新建数组长度还是要大于集合size好,你觉得呢 |