前言
如果你沒有看過ArrayList的底層源碼,建議你去看一遍並理解,因為我也明白大家想快點刷題找工作,但這種你光看簡略的表述是不能充分理解的。
給大家一篇解析ArrayList底層源碼的文章,希望對大家有幫助:
https://www.cnblogs.com/ibcdwx/p/13769756.html
ArrayList 的擴容機制(原理)是什么
arraylist的底層是用數組來實現的。我們初始化一個arraylist集合還沒有添加元素時,其實它是個空數組,只有當我們添加第一個元素時,內部會調用calculateCapacity方法並返回最小容量10,也就是說arraylist初始化容量為10。
當最小容量大於當前數組的長度時,便開始可以擴容了,arraylist擴容的真正計算是在一個grow()里面,新數組大小是舊數組的1.5倍,如果擴容后的新數組大小還是小於最小容量,那新數組的大小就是最小容量的大小,后面會調用一個Arrays.copyof方法,這個方法是真正實現擴容的步驟。