ArrayList原理
ArrayList的常量與變量有哪些!
當集合中的元素超出數組規定的長度時,數組就會進行擴容操作,擴容操作就是ArrayList存儲操作緩慢的原因,尤其是當數據量較大的時候,每次擴容會消耗的時間就會越來越多
ArrayList 的方法有哪些?
- add()
add()方法中主要用到了一個新的方法——ensureCapacityInternal,來看下ensureCapacityInternal的源碼:
而 ensureCapacityInternal 主要調用的是 ensureExplicitCapacity 方法和 calculateCapacity 方法,我們先看下calculateCapacity 方法:
點擊ensureCapacityInternal中的ensureExplicitCapacity,可以看到來到了 ensureExplicitCapacity 方法,而 ensureExplicitCapacity 主要調用的就是上面所說的 grow 方法,源碼如下:
grow方法源碼如下:
grow方法調用的hugeCapacity源碼如下:
總結:在進行 add 操作時先判斷下標是否越界,是否需要擴容,如果需要擴容,就複製數組,然後設置對應的下標元素值擴容:默認擴容一半,如果擴容一半不夠的話,就用目標的size作爲擴容後的容量
- get()
3. set()
4. remove()
其他的方法就先不看了。