1. 程式人生 > >ArrayList各個版本的擴容問題

ArrayList各個版本的擴容問題

第一:在容量進行擴充套件的時候,其例項如整除運算將容量擴充套件為原來的1.5倍加1,而jdk1.7是利用位運算,從效率上,jdk1.7就要快於jdk1.6。

第二:在算出newCapacity時,其沒有和ArrayList所定義的MAX_ARRAY_SIZE作比較,為什麼沒有進行比較呢,原因是jdk1.6沒有定義這個MAX_ARRAY_SIZE最大容量,也就是說,其沒有最大容量限制的,但是jdk1.7做了一個改進,進行了容量限制。

1). ArrayList實際上是通過一個數組去儲存資料的,當我們構造ArrayList時,如果使用預設建構函式,最後ArrayList的預設容量大小是10。


2). 當ArrayList容量不足以容納全部元素時,ArrayList會自動擴張容量,新的容量 = 原始容量 + 原始容量 / 2。


3). ArrayList的克隆函式,即是將全部元素克隆到一個數組中。


4. ArrayList實現java.io.Serializable的方式。當寫入到輸出流時,先寫入“容量”,再依次寫出“每一個元素”;當讀出輸入流時,先讀取“容量”,再依次讀取“每一個元素”。