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