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組...