ArrayList原理分析

ArrayList原理

ArrayList的常量與變量有哪些!

在這裏插入圖片描述
當集合中的元素超出數組規定的長度時,數組就會進行擴容操作,擴容操作就是ArrayList存儲操作緩慢的原因,尤其是當數據量較大的時候,每次擴容會消耗的時間就會越來越多

ArrayList 的方法有哪些?

  1. add()

在這裏插入圖片描述
add()方法中主要用到了一個新的方法——ensureCapacityInternal,來看下ensureCapacityInternal的源碼:

在這裏插入圖片描述
而 ensureCapacityInternal 主要調用的是 ensureExplicitCapacity 方法和 calculateCapacity 方法,我們先看下calculateCapacity 方法:
在這裏插入圖片描述
點擊ensureCapacityInternal中的ensureExplicitCapacity,可以看到來到了 ensureExplicitCapacity 方法,而 ensureExplicitCapacity 主要調用的就是上面所說的 grow 方法,源碼如下:
在這裏插入圖片描述
grow方法源碼如下:
在這裏插入圖片描述
grow方法調用的hugeCapacity源碼如下:

在這裏插入圖片描述
總結:在進行 add 操作時先判斷下標是否越界,是否需要擴容,如果需要擴容,就複製數組,然後設置對應的下標元素值擴容:默認擴容一半,如果擴容一半不夠的話,就用目標的size作爲擴容後的容量

  1. get()

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
3. set()

4. remove()

在這裏插入圖片描述
在這裏插入圖片描述

其他的方法就先不看了。

在這裏插入圖片描述

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