手寫ArrayList入門

2021-10-03 20:39:39 字數 834 閱讀 8599

arraylist是集合的一種實現,實現了介面list,list介面繼承了collection介面。collection是所有集合類的父類。arraylist使用非常廣泛,不論是資料庫表查詢,excel匯入解析,還是**資料爬取都需要使用到,了解arraylist原理及使用方法顯得非常重要。

那麼arraylist是怎麼初始化的?

private int index=0; //表示當前有0個,或者要插入的元素位址

private t data = (t) new object[10];     //t表示為泛型

這裡我們進行初始化,初始大小為10,經過閱讀原始碼private static final int default_capacity = 10;我們發現他的初始值為10,所以這裡我們也設定為10。

然後我們來實現增加資料的方法,這個時候我們需要考慮到arraylist的拓容機制,那麼它又是怎麼拓容的呢?

擴容規則為「陣列當前足夠的最小容量 + (陣列當前足夠的最小容量 / 2)」,即陣列當前足夠的最小容量 * 1.5,當然有最大值的限制。

故我們的增加資料的方法為:

/*** 執行緒不安全

* 超出索引  怎麼解決?拓容

* @param add

*/public void add(t add) else {

this.index--;

for(int i=index;i本次重寫arraylist,只是粗些,我們進行簡單入門還是可以的。

手寫ArrayList集合

最近仔細的研究了下集合框架的原始碼,並完全手寫下來,這裡將每一步的進展記錄下來,歡迎指點。arraylist的構造器,分別為無參構造器 傳入初始大小的有參構造器 傳入乙個集合型別的有參構造器,這裡只介紹前面兩種常用的構造器。無參構造器 arraylist的底層實際就是使用陣列來實現的,我們建立乙個陣...

純手寫ArrayList集合 二

在閱讀arraylist的jdk原始碼的時候,你經常會看到這兩個系統函式 arrays.copyof elementdata,size 而這個方法的原始碼是 public static t copyof t original,int newlength public static t copyof ...

手寫基本容器 ArrayList(一)

arraylist的地層是用陣列來進行搭建的,所以我們可以先用陣列來搭建底層,我們需要乙個變數來計算陣列的大小 然後在乙個乙個的往裡面新增自己需要的方法 為了定義預設的陣列大小 private static final int default size 10 一種是有參構造器,另一種是無參構造器,在...