首先,我們可以看到,ArrayList繼承的是AbstractList抽象類,實現的是List接口
ArrayList的成員變量都用private static final來進行修飾,默認的容量是10
我們從上面的ArrayList的構造函數可以得知,如果不設置initialCapacity,創建實例對象時,系統默認的capacity爲默認的0.
接下來,我們來看看ArrayList的add()方法(未設置初始容量,就在方法中爲默認容量)
add()操作之前,我們需要判斷Capacity容量是否足夠,我們接着進入ensureCapacityInternal
ensureCapacityInternal底層這裏有兩個方法,參數中的方法
會返回當前容量和elmentData的最大值。
在這裏,就是核心的grow方法了,如果判斷出增加後,容量大於了Capacity,那就必須擴容了,我們接着往下看
我們可以從紅框中看到,newCapacity是在原來的Capacity+(Capacity>>1)得來的。
接下來,我們看看remove方法
首先我們進入,rangeCheck()方法
發現這是一個檢查下標是否越界
然後繼續往下閱讀源代碼,我們發現,實現的是一個數組拷貝功能來完成元素的刪除。