/*** created by chengbx on 2018/5/17.
* 自己實現乙個arraylist,幫助我們更好的理解arraylist的底層結構!
* 一句話概括arraylist的底層:陣列的擴容與資料的拷貝! */
public
class
cbxarraylist
public cbxarraylist(int
initialcapacity)
catch
(exception e)
}elementdata = new
object[initialcapacity];
}public
void
add(object obj)
elementdata[size++] =obj;
}public
intsize()
public
boolean
isempty()
public object get(int
index)
//索引校驗
private
void rangecheck(int
index)
catch
(exception e) }}
public
void remove(int
index)
elementdata[--size] = null
; }
//遍歷陣列 取出與其相等(equals)的資料 刪除
public
boolean
remove(object o)
}return
true
; }
return
false
; }
//取出原陣列索引資料 將新資料賦值到對應索引位置,返回老資料
public object set(int
index,object o)
public
void add(int
index,object object)
}
ArrayList底層原始碼
arraylist的屬性 private static final int default capacity 10 預設初始容量的大小 private static final object empty elementdata 空陣列,用於有參構造時引數為零的例項 private static fi...
ArrayList底層原始碼學習
主要為add,get,set,remove,indexof,陣列擴容等內容的學習。擴容 擴容前提 size elementdata.length,也就是元素個數達到了陣列容器的長度。建立新的更大空間的 如size 2 1 陣列物件,object newarray new object size 2 ...
ArrayList原始碼分析
arraylist是平時使用很多的乙個類,趁有時間,我也閱讀以下原始碼,以幫助自己加深理解。類的層次結構這裡就不列出了,主要分析一下原始碼部分,屬性部分 protected transient int modcount 0 這個屬性是從abstractlist繼承過來的,每次arraylist進行結...