ArrayListremove方法的源碼:
public boolean remove(Object o) { if (o == null) { for (int index = 0; index < size; index++) if (elementData[index] == null) { fastRemove(index); return true; } } else { for (int index = 0; index < size; index++) if (o.equals(elementData[index])) { fastRemove(index); return true; } } return false; }
首先當然是找到要刪除的對象的下標,畢竟在java中List的實現是使用數組來實現的,一個數組,你說要刪掉某個元素,那是什麼意思,意思就是把要刪除元素下標之後的元素都移前一位:
private void fastRemove(int index) { modCount++; int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // Let gc do its work }
elementData[--size] = null;把要刪除元素之後的元素都前移一位之後,最後一個元素都讓要設定為null了下面是TestSystemCopy.java:
package testSystem;public class TestSystemCopy {public static void main(String[] args) {String[] strArr = new String[]{"1","2","3","4","5","6","7","8","9"};//把下標為4的元素往前移一位System.arraycopy(strArr, 3, strArr, 2, strArr.length -3);strArr[strArr.length-1] = null;for(int i = 0; i < strArr.length; i++){System.out.println(strArr[i]);}}}
ArrayList中是使用數組來實現的