JDK原始碼分析 Vector

2021-10-08 00:05:05 字數 1246 閱讀 8802

vector和arraylist有一定的不同

int newcapacity = oldcapacity + ((capacityincrement > 0) ? capacityincrement : oldcapacity);

從這一句我們可以看出

(增長容量)capacityincrement > 0    增長倍數 :陣列數量(舊容量)+ 增長容量

( 增長容量)capacityincrement<=0     增長倍數 :陣列數量(舊容量)+陣列數量  也就2倍 x2

而arraylist增長的倍數為1.5倍

vector是執行緒安全的,可以看到方法上都是直接通過synchronized進行同步的。

vector也是內部也是陣列實現

vector增長方法和arraylist大同小異,增長容量大於0則直接,舊容量+增長容量,當增長容量小於等於0,擴容為舊容量的2倍

vector是執行緒安全性,內部使用synchronized同步方法,簡單粗暴,缺點效率低。

由於vector使用不多,這裡只學習內部原理。

JDK原始碼閱讀 Vector實現

vector同樣繼承自abstractlist,與arraylist linedlist一樣,是list的一種實現 與arraylist一樣,也是使用物件陣列儲存元素 protected object elementdata 記錄元素的個數 protected intelementcount 每次動...

Vector原始碼分析

與arraylist一樣,vector的底層也是使用陣列elementdata進行儲存資料 protected object elementdata 當前elementdata陣列中元素的個數 protected int elementcount 當前elementdata陣列進行擴容的增量 pro...

Vector原始碼分析

說實話vector在工作中用的比較少,至少我沒有用到過。vector在面試中經常用來和arraylist進行比較,但凡知道 vector的都應該知道vector是執行緒安全的,而arraylist是執行緒不安全的,究其原因其實就是因為vector在增 改 刪操方法加了synchronized,利用鎖...