StringBuffer:內(nèi)部實(shí)現(xiàn)是一個(gè)字符數(shù)組每辟。初始默認(rèn)大小為16,當(dāng)然也可以在其構(gòu)造方法中進(jìn)行設(shè)置干旧。當(dāng)新添加字符或字符串時(shí)渠欺,發(fā)現(xiàn)數(shù)組容量不夠。這個(gè)時(shí)候就需要使用Array.copyOf()方法進(jìn)行擴(kuò)充莱革。擴(kuò)充的新的數(shù)組大小等于峻堰,(原始容量*2+2)和(數(shù)組實(shí)際字符個(gè)數(shù)+新增的字符長(zhǎng)度)之間的較大值。
ArrayList:內(nèi)部實(shí)現(xiàn)是一個(gè)Object的數(shù)組盅视。初始默認(rèn)大小為0捐名,當(dāng)然也可以在其構(gòu)造方法中設(shè)置。當(dāng)添加一個(gè)Object時(shí)闹击,默認(rèn)擴(kuò)充數(shù)組容量為10镶蹋。然后每次擴(kuò)充的新的數(shù)組大小等于,(原始容量*3/2)和(數(shù)組的長(zhǎng)度+1)之間的較大值赏半。根據(jù)每次增加一個(gè)Object贺归,可得該情況每次擴(kuò)充的固定大小為3/2。當(dāng)初始大小為手動(dòng)設(shè)置的時(shí)候断箫,每次擴(kuò)充的新的數(shù)組大小等于拂酣,(原始容量*3/2)和(數(shù)組的長(zhǎng)度+1)之間的較大值。
HashMap:內(nèi)部實(shí)現(xiàn)是一個(gè)Entry的數(shù)組仲义,默認(rèn)大小是空的數(shù)組婶熬。初始化的容量是16,加載因子是3/4(當(dāng)數(shù)組元素?cái)?shù)量大于總?cè)萘康募虞d因子的時(shí)候埃撵,擴(kuò)充數(shù)組)赵颅。當(dāng)默認(rèn)不是空的數(shù)組時(shí),當(dāng)達(dá)到加載因子的比例的時(shí)候暂刘,每次擴(kuò)充初始容量的2倍