如同C語言中字符數(shù)組向String過渡一樣,作為面向?qū)ο笳Z言,自然而然的出現(xiàn)了由Object[]數(shù)據(jù)形成的集合。本文從JDK源碼出發(fā)簡(jiǎn)單探討一下ArrayList的幾個(gè)重要方法。
ArrayList的源碼重點(diǎn)在于: 1. 擴(kuò)容的時(shí)候按照原容量的1.5倍擴(kuò)容 2. 若需要的容量很大,可以通過ensureCapacity進(jìn)行提前一步到位擴(kuò)容,或者直接通過構(gòu)造器聲明一個(gè)大的ArrayList。 3. 對(duì)Object[]進(jìn)行操作的時(shí)候都是通過System.arraycopy進(jìn)行的,這是一個(gè)native方法,直接操作內(nèi)存,等同于C語言中的底層方法。 4. 關(guān)于默認(rèn)長(zhǎng)度為什么是10,還不是很明白。按照StackOverFlow的說法是作為一個(gè)List長(zhǎng)度沒有必要是2的次冪。10不大不小,剛好夠用(通過數(shù)據(jù)分析得到)。但是我仍然不理解為什么HashMap就要是2的次冪。等看完HashMap再來回答這個(gè)問題。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注