hashmap和hashtable到底有什么區(qū)別

哈希計(jì)算方法不同

hashmap:HashMap計(jì)算hash對(duì)key的hashcode進(jìn)行了二次hash,以獲得更好的散列值,然后對(duì)table數(shù)組長(zhǎng)度取模。

hashtable:Hashtable計(jì)算hash是直接使用key的hashcode對(duì)table數(shù)組的長(zhǎng)度直接進(jìn)行取模。

鍵值是否可以為空值

hashmap:HashMap可以使用null作為key,不過(guò)建議還是盡量避免這樣使用。HashMap以null作為key時(shí),總是存儲(chǔ)在table數(shù)組的名列前茅個(gè)節(jié)點(diǎn)上。

hashtable:Hashtable則不允許null作為key

初始化容量不同

hashmap:HashMap 的初始容量為:16。

hashtable:Hashtable 初始容量為:11。

兩者的負(fù)載因子默認(rèn)都是:0.75

同步性不同

hashmap:HashMap是一個(gè)不同步的Map,這意味著HashMap是線(xiàn)程不安全的,如果沒(méi)有適當(dāng)?shù)耐酱a,則無(wú)法在多個(gè)線(xiàn)程之間共享。

hashtable:Hashtable是一個(gè)同步的Map,Hashtable是線(xiàn)程安全的,可以在多個(gè)線(xiàn)程之間共享。如果您需要使用同步的 Map,Hashtable 比在同步包裝器中使用 HashMap 更快。

性能不同

由于HashMap不是同步的Map,因此在性能方面它比Hashtable更快,更好,實(shí)際上,它比Hashtable使用更少的內(nèi)存。雖然它們實(shí)際上是相同的,但Hashtable比HashMap慢一點(diǎn),但比同步的HashMap快一點(diǎn)。從本質(zhì)上講,將 Hashtable 與多線(xiàn)程訪(fǎng)問(wèn)結(jié)合使用是不安全的,因?yàn)橹挥蟹椒ㄊ峭降?。Hashtable是HashMap的同步對(duì)應(yīng)物。與同步對(duì)象相比,非同步對(duì)象的性能更好,就像 Hashtable 在單線(xiàn)程環(huán)境中的性能更好一樣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容