集合系列 List Vector

2021-10-05 23:00:13 字數 1012 閱讀 1687

vector 的底層實現以及結構與 arraylist 完全相同,只是在某一些細節上會有所不同。這些細節主要有:

我們知道 arraylist 是執行緒不安全的,只能在單執行緒環境下使用。而 vector 則是執行緒安全的,那麼其實怎麼實現的呢?

其實 vector 的實現很簡單,就是在每乙個可能發生執行緒安全的方法加上 synchronized 關鍵字。這樣就使得任何時候只有乙個執行緒能夠進行讀寫,這樣就保證了執行緒安全。

public synchronized e get(int index) 

public synchronized boolean add(e e)

與 arraylist 類似,vector 在插入元素時也會檢查容量並擴容。在 vector 中這個方法是:ensurecapacityhelper。

private void ensurecapacityhelper(int mincapacity) 

private void grow(int mincapacity)

其實上述擴容的思路與 arraylist 是相同,唯一的區別是 vector 的擴容大小。

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

capacityincrement : oldcapacity);

從上面的**可以看到:如果 capacityincrement 大於 0,那麼就按照 capacityincrement 去擴容,否則擴大為原來的 2倍。而 arraylist 則是擴大為原來的 1.5 倍。

vector 與 arraylist 在實現方式上是完全一致的,但是它們在某些方法有些許不同:

第一,vector 是執行緒安全的,而 arraylist 是執行緒不安全的。vector 直接使用 synchronize 關鍵字實現同步。

第二,vector 預設擴容為原來的 2 被,而 arraylist 預設擴容為原來的 1.5 倍。

Nginx系列教程集合

nginx的簡單介紹與安裝nginx的簡單介紹 nginx是一款高效能的 http 和反向 伺服器,由俄羅斯人igor sysoev 伊戈爾 賽索耶夫 為俄羅斯 rambler.ru開發的,在rambler.ru 平穩的執行了四年,而且俄俄羅斯超過20 的虛擬主機平台採用nginx作為反向 伺服器。...

C 物件模型系列集合

文章 指標和引用 指標與陣列 指標與字串 堆疊與函式呼叫 sizeof與物件記憶體布局 單繼承與虛函式表 多重繼承與虛函式表 虛繼承與虛函式表 型別轉化 參考 1 c 物件模型 c 物件模型筆記 c 物件記憶體布局1 c 物件記憶體布局1 c 虛函式表解析 位元組對齊1 位元組對齊2 位元組對齊3 ...

android開發系列文章集合

android 技術專題系列之二 telephony android 技術專題系列之三 編譯 build 流程 android 技術專題系列之四 網路資源及常見命令備 android 技術專題系列之五 本地化 android 技術專題系列之六 如何安裝.apk到模擬 android 技術專題系列之七...