每當(dāng)向數(shù)組中添加元素時(shí),都要去檢查添加后元素的個(gè)數(shù)是否會(huì)超出當(dāng)前數(shù)組的長(zhǎng)度,如果超出,數(shù)組將會(huì)進(jìn)行擴(kuò)容,以滿足添加數(shù)據(jù)的需求。數(shù)組擴(kuò)容通過ensureCapacity(int minCapacity)方法來(lái)實(shí)現(xiàn)。在實(shí)際添加大量元素前,我也可以使用ensureCapacity來(lái)手動(dòng)增加ArrayList實(shí)例的容量,以減少遞增式再分配的數(shù)量。
數(shù)組進(jìn)行擴(kuò)容時(shí),會(huì)將老數(shù)組中的元素重新拷貝一份到新的數(shù)組中,每次數(shù)組容量的增長(zhǎng)大約是其原容量的1.5倍。這種操作的代價(jià)是很高的,因此在實(shí)際使用時(shí),我們應(yīng)該盡量避免數(shù)組容量的擴(kuò)張。當(dāng)我們可預(yù)知要保存的元素的多少時(shí),要在構(gòu)造ArrayList實(shí)例時(shí),就指定其容量,以避免數(shù)組擴(kuò)容的發(fā)生?;蛘吒鶕?jù)實(shí)際需求,通過調(diào)用ensureCapacity方法來(lái)手動(dòng)增加ArrayList實(shí)例的容量。