public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!! add操作涉及到容器的扩容
elementData[size++] = e;//正常操作,多线程时不安全
return true;
}
public E remove(int index) {
rangeCheck(index);
modCount++;//使用迭代器遍历元素时,删除元素会让迭代器失效
E oldValue = elementData(index);
int numMoved = size - index - 1;//找到要移动到前面的长度
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);//把数组index之后的元素向前移1。
elementData[--size] = null; // clear to let GC do its work
return oldValue;
}
elementData[--size] = null; // clear to let GC do its work
那么和我直接add(null) elementData[size++] = e;这句话有什么区别?