總結(jié)StringBuffer、ArrayList、HashMap的擴容

StringBuffer:內(nèi)部實現(xiàn)是一個字符數(shù)組。初始默認(rèn)大小為16,當(dāng)然也可以在其構(gòu)造方法中進行設(shè)置。當(dāng)新添加字符或字符串時,發(fā)現(xiàn)數(shù)組容量不夠。這個時候就需要使用Array.copyOf()方法進行擴充。擴充的新的數(shù)組大小等于,(原始容量*2+2)和(數(shù)組實際字符個數(shù)+新增的字符長度)之間的較大值。

ArrayList:內(nèi)部實現(xiàn)是一個Object的數(shù)組。初始默認(rèn)大小為0,當(dāng)然也可以在其構(gòu)造方法中設(shè)置。當(dāng)添加一個Object時,默認(rèn)擴充數(shù)組容量為10。然后每次擴充的新的數(shù)組大小等于,(原始容量*3/2)和(數(shù)組的長度+1)之間的較大值。根據(jù)每次增加一個Object,可得該情況每次擴充的固定大小為3/2。當(dāng)初始大小為手動設(shè)置的時候,每次擴充的新的數(shù)組大小等于,(原始容量*3/2)和(數(shù)組的長度+1)之間的較大值。

HashMap:內(nèi)部實現(xiàn)是一個Entry的數(shù)組,默認(rèn)大小是空的數(shù)組。初始化的容量是16,加載因子是3/4(當(dāng)數(shù)組元素數(shù)量大于總?cè)萘康募虞d因子的時候,擴充數(shù)組)。當(dāng)默認(rèn)不是空的數(shù)組時,當(dāng)達到加載因子的比例的時候,每次擴充初始容量的2倍

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容