List的toArray 源马问题,为什么要将a[size] 赋值为null呢


 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,以提示用户,链表长度不足数组长度。
如果列表与指定的数组匹配,并且有多余的空间 (即,数组比列表有更多的元素),在集合末尾紧跟的数组被设置为 空。 (这在确定长度时是有用的,如果调用者知道列表不包含任何空元素。)
下面是一个测试类

img

img

便于GC回收;

之前一直都是使用 小于 的情况,大于的情况还真没考虑过。像是打了个标记,可能有些情况需要知道原来的长度?
没想到什么好的解释,等大佬出现