千鋒教育Java入門(mén)全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

ArrayList源碼分析
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
private static final Object[] EMPTY_ELEMENTDATA = {};
(1)這兩個(gè)空數(shù)組就是先判斷是無(wú)參構(gòu)造還是帶參構(gòu)造
add()方法:
1.ensureCapacityInternal(size + 1); 先保證容量
在保證容量的方法中,在計(jì)算最小容量,判斷無(wú)參和有參數(shù),無(wú)參的話就將DEFAULT_CAPACITY這個(gè)空數(shù)組等于10,接下來(lái)就是確認(rèn)這個(gè)容量是否能滿足如果滿足,因?yàn)槲覀儽敬涡枰淖钚∪萘勘饶慵现械讓訉?shí)現(xiàn)數(shù)組的長(zhǎng)度還長(zhǎng),不能保證容量,如果你要的這個(gè)數(shù)組長(zhǎng)度小于給與的長(zhǎng)度,最終的數(shù)組長(zhǎng)度就為10,如果不滿足,將進(jìn)行g(shù)row(minCapacity)這個(gè)方法進(jìn)行擴(kuò)容,在這個(gè)grow方法中將數(shù)組的hash值右移1位,也就是擴(kuò)容1.5倍,然后再判斷是否滿足,以后的而每次擴(kuò)容都是擴(kuò)容1.5倍 如果是帶參,那么就再這個(gè)帶參的基礎(chǔ)上每次擴(kuò)容1.5倍
2.elementData[size++] = e;數(shù)組賦值
3.成功:return true;
例子:一個(gè)ArrayList如果要存放20個(gè)元素,要擴(kuò)容幾次?
10,15,22---前提是使用的是無(wú)參構(gòu)造
如果帶參,參數(shù)是0,那么擴(kuò)容的方式是:
1,2,3,4,6,9,13,19,28