如何進(jìn)行Hashtable源碼解析

如何進(jìn)行Hashtable源碼解析,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、阿榮網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、阿榮網(wǎng)絡(luò)營(yíng)銷、阿榮企業(yè)策劃、阿榮品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供阿榮建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:bm7419.com

今天我們來分析一下Hashtable的底層實(shí)現(xiàn)。提到Hashtable可能對(duì)于有些人來說會(huì)比較陌生,因?yàn)椴唤?jīng)常使用。這是因?yàn)镠ashtable是很早就有的集合類了,因?yàn)樗窃贘DK1.0版本中存在的。HashMap集合是在Hashtable集合之后才有的。也可以理解為HashMap集合是優(yōu)化后的Hashtable。所以它們底層的實(shí)現(xiàn)方式幾乎是一樣,但它們也有些不同的地方要注意,并且它們都是用哈希表的方式存儲(chǔ)的。既然我們已經(jīng)掌握了HashMap的底層實(shí)現(xiàn),那么我們?cè)诜治鯤ashtable時(shí)會(huì)比較容易,所以本篇中將直接分析Hashtable的底層源碼,將不在介紹哈希表的相關(guān)知識(shí)了。還是和其它集合一樣,我們還是先看Hashtable的初始化。

  • 初始化

如何進(jìn)行Hashtable源碼解析

如何進(jìn)行Hashtable源碼解析

如何進(jìn)行Hashtable源碼解析

如何進(jìn)行Hashtable源碼解析

上面源碼是Hashtable集合初始化時(shí)所調(diào)用的方法,也就是我們通過默認(rèn)無參的構(gòu)造方法創(chuàng)建Hashtable對(duì)象時(shí),就會(huì)執(zhí)行上述代碼。因?yàn)槲覀円呀?jīng)分析過HashMap中的源碼了,所以在這里我們將不做過多的解釋了。我們將重點(diǎn)分析一下Hashtable初始化與HashMap初始化有何不同。

我們?cè)贖ashMap這篇文章中分析過,在通過無參的構(gòu)造方法創(chuàng)建HashMap對(duì)象時(shí),只會(huì)設(shè)置HashMap中的加載因子為默認(rèn)的0.75,并不會(huì)執(zhí)行底層數(shù)組的初始化。而在Hashtable中,不但設(shè)置了默認(rèn)的加載因子為0.75,并且已經(jīng)將底層的數(shù)組初始化了。默認(rèn)初始化的數(shù)組大小為為了11。

下面我們看一下Hashtable中的put方法的底層實(shí)現(xiàn)邏輯。

如何進(jìn)行Hashtable源碼解析

如何進(jìn)行Hashtable源碼解析

如何進(jìn)行Hashtable源碼解析

通過對(duì)上面源碼的分析,我們可以得出以下Hashtable的特性。

  • 當(dāng)我們通過無參構(gòu)造方法創(chuàng)建Hashtable對(duì)象時(shí),底層的數(shù)組就會(huì)執(zhí)行初始化,并將數(shù)組大小設(shè)置為默認(rèn)大小為11,將加載因子設(shè)置為默認(rèn)值0.75

  • Hashtable中不允許保存null元素,無論是key還是value

  • Hashtable不能保存相同的key元素,如果元素的key相同,則將后添加到Hashtable中的元素的value覆蓋原Hashtable已經(jīng)存在的元素的value

  • Hashtable執(zhí)行再散列時(shí),會(huì)創(chuàng)建比原來數(shù)組大2倍+1的新數(shù)組

  • Hashtable中我們發(fā)現(xiàn)方法中添加了同步關(guān)鍵字synchronized,這就說明在Hashtable是線程安全的集合類,在多線程開發(fā)時(shí),無需添加額外的同步代碼,就可以保證集合的線程安全

關(guān)于如何進(jìn)行Hashtable源碼解析問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

當(dāng)前標(biāo)題:如何進(jìn)行Hashtable源碼解析
分享網(wǎng)址:http://bm7419.com/article24/ijhpce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)品牌網(wǎng)站建設(shè)、小程序開發(fā)、Google、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)