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); elementData[--size] = null; // clear to let GC do its work return oldValue; } publicbooleanremove(Object o){ if (o == null) { //查找到要删除的值,再删除 for (int index = 0; index < size; index++) if (elementData[index] == null) { fastRemove(index); returntrue; } } else { //查找到要删除的值,再删除 for (int index = 0; index < size; index++) if (o.equals(elementData[index])) { //按照索引删除,底层与按索引删除方法相同 fastRemove(index); returntrue; } } returnfalse; }