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;
当list 的长度小于传入数组的长度时,将原数组的第size位转化成null,以提示用户,链表长度不足数组长度。
如果列表与指定的数组匹配,并且有多余的空间 (即,数组比列表有更多的元素),在集合末尾紧跟的数组被设置为 空。 (这在确定长度时是有用的,如果调用者知道列表不包含任何空元素。)
下面是一个测试类
便于GC回收;
之前一直都是使用 小于 的情况,大于的情况还真没考虑过。像是打了个标记,可能有些情况需要知道原来的长度?
没想到什么好的解释,等大佬出现