關於arraylist的擴容機制

2022-08-27 16:06:13 字數 401 閱讀 1521

arraylist會自動改變size的長度:

首先,arraylist定義了乙個私有的未被序列化的陣列elementdata,用來儲存arraylist的物件列表(注意只定義未初始):

private transient object elementdata;

其次,以指定初始容量(capacity)或把指定的collection轉換為引用型陣列後例項化elementdata陣列;如果沒有指定,則預置初始容量為10進行

例項化。把私有陣列預先例項化,然後通過copyof方法覆蓋原陣列,是實現自動改變arraylist的大小(size)的關鍵。

所以個人認為arraylist其實就是關於系統方法的組合。在我們追加物件時,先計算容量,如果不夠,用拷貝的方法對原有的陣列變數進行賦值,指向新陣列,同時size自增1。

ArrayList的動態擴容

arraylist可以實現容量的自適應的增加,通過閱讀源 對這個機制進行一下簡單的分析。首先,arraylist有乙個初始的預設大小,為10.private static final int default capacity 10 從add方法為入口 public boolean add e e 可...

ArrayList的擴容機制

arraylist的底層資料結構是動態陣列 capacity相當於初始化陣列的大小 size就相當於陣列的實際長度 default initial capacity.private static final int default capacity 10 檢視原始碼可以發現,預設容量是10。但是當我...

ArrayList的擴容機制

arraylist的擴容機制 當向arraylist中新增元素的時候,arraylist的儲存容量如果滿足新元素的容量要求,則直接儲存 arraylist的儲存容量如果不滿足新元素的容量要求,arraylist會增強自身的儲存能力,以達到儲存新元素的要求。因為不同的jdk版本的擴容機制可能有差異,下...