ArrayList源碼分析

通過查看源碼debug,可以看到一開始我們申請的是一個空的object數據,當我使用list.add()時,它會判斷當前容量的大小;先與默認capacity10比較,如果小與10把數組的大小使用Arrays.copy進行數組擴容爲0,當大於10時,擴大的容量爲:

newCapacity = oldCapacity + (oldCapacity >> 1);

當大於最大容量時:

return (minCapacity > MAX_ARRAY_SIZE) ?
            Integer.MAX_VALUE :
            MAX_ARRAY_SIZE;

可以看出大於最大容量時,使用的是Integer的最大值


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章