原始碼如下:
//下面是arraylist的擴容機制
//arraylist的擴容機制提高了效能,如果每次只擴充乙個,
//那麼頻繁的插入會導致頻繁的拷貝,降低效能,而arraylist的擴容機制避免了這種情況。
/*** 如有必要,增加此arraylist例項的容量,以確保它至少能容納元素的數量
* @param mincapacity 所需的最小容量
*/public void ensurecapacity(int mincapacity)
}//得到最小擴容量
private void ensurecapacityinternal(int mincapacity)
ensureexplicitcapacity(mincapacity);
}//判斷是否需要擴容,上面兩個方法都要呼叫
private void ensureexplicitcapacity(int mincapacity)
核心方法grow分析
/**
* arraylist擴容的核心方法。
*/private void grow(int mincapacity)
原始碼中對於容量的計算採用的為位移機制,這樣使用的原因是因為對於大資料的2進製運算,位移運算子比那些普通運算子的運算要快的很多。提高效能 ArrayList原始碼學習
arraylist 乙個由陣列實現的集合物件,預設容量為10。特點 1 隨機查詢快 因為陣列是連續的記憶體空間可以使用索引直接定位陣列內的元素 2 隨機插入慢 因為會移動陣列 方法 add public boolean add e e grow 擴容時先判斷當前陣列size的2倍是否滿足所需最小si...
ArrayList原始碼學習
對於arraylist我們都很熟悉,使用起來非常的方便,使用的較多的方法有add remove indexof 等,對於這種優秀的集合框架,研究其原始碼能讓我們對其掌握更加深刻,能更合理的應用在業務場景中,同時我們自己在寫程式時也能夠參考其設計思想,提供我們的編碼水平。一.arraylist簡介 1...
ArrayList原始碼學習
randomaccess 隨機快速訪問介面 cloneable是標記型的介面,它們內部都沒有方法和屬性,實現 cloneable來表示該物件能被轉殖,能使用object.clone 方法。如果沒有實現 cloneable的類物件呼叫clone 就會丟擲clonenotsupportedexcepti...