Vector和Hashtable原始碼閱讀與理解

2021-08-14 11:11:37 字數 897 閱讀 4239

vector是執行緒安全的arraylist:

public

synchronized

void

insertelementat(e obj, int index)

ensurecapacityhelper(elementcount + 1);

system.arraycopy(elementdata, index, elementdata, index + 1, elementcount - index);

elementdata[index] = obj;

elementcount++;

}

hashtable是執行緒安全hashmap:

public

synchronized v put(k key, v value)

entry<?,?> tab = table;

int hash = key.hashcode();

int index = (hash & 0x7fffffff) % tab.length;

@suppresswarnings("unchecked")

entryentry = (entry)tab[index];

for(; entry != null ; entry = entry.next)

}addentry(hash, key, value, index);

return

null;

}

原理就是在方法級別上鎖,對於高併發的支援並不是很好。所以有了j.u.c包下的concurrenthashmap閱讀與理解來支援多執行緒下hashmap的高併發操作。而多執行緒下的佇列操作由j.u.c下的arrayblockingqueue閱讀與理解來處理。

HashMap工作原理 和 HashTable

你用過hashmap嗎 譬如hashmap可以接受null鍵值和值,而hashtable則不能 hashmap是非synchronized hashmap很快 以及hashmap儲存的是鍵值對等等。你知道hashmap的工作原理嗎 hashmap是基於hashing的原理,我們使用put key,v...

C 中vector和vector的區別

在使用stl容器 比如map list vector等 的時候,是用放乙個物件還是放乙個物件指標,即是用vector還是vector,這裡的vector可以換成其他的容器,int可以換成其他基本型別,也可以自定義的資料結構或類。首先,要說明的是,這兩種方式,怎麼用都可以實現功能,把一組整型數放到容器...

vector 和vector 有什麼區別?

圓括號 vectorv n 圓括號是建構函式,表示1個容量為n的vector 方括號vectorv n 表示n個vectorv 二維陣列 相當於vector v n 二維陣列 舉例vector v 10 表示 乙個容量 10的vector vector v 10 表示10個容量不確定的vector組...