HashMap的put方法-創(chuàng)新互聯(lián)

HashMap的put方法大體流程:

柳南網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,柳南網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為柳南上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的柳南做網(wǎng)站的公司定做!

1、根據(jù)key通過哈希算法與運(yùn)算得出數(shù)組下標(biāo);

2、如果數(shù)組下標(biāo)位置元素為空,則將key和value封裝成為Entry對(duì)象(JDK1.7中是Entry對(duì)象,JDK1.8中是Node對(duì)象)并放入該位置;

3、如果數(shù)組下標(biāo)位置元素不為空,則要分情況討論;

? (1):如果是JDK1.7,則先判斷是否擴(kuò)容,如果要擴(kuò)容就進(jìn)行擴(kuò)容,如果不用擴(kuò)容就生成Entry對(duì)象,并使用頭插法添加到當(dāng)前位置的鏈表中;

? (2):如果是JDK1.8,則會(huì)先判斷當(dāng)前位置上的Node的類型,看是紅黑樹Node,還是鏈表Node;

? ①:如果是紅黑樹Node,則將key和value封裝為一個(gè)紅黑樹節(jié)點(diǎn)并添加到紅黑樹中,在這個(gè)過程中會(huì)判斷紅黑樹中是否存在當(dāng)前的key,如果存在則是更新value;

? ②:如果是鏈表節(jié)點(diǎn)Node,則將key和value封裝成為一個(gè)鏈表Node并通過尾插法插入到鏈表的最后位置去。由于是尾插法,所以需要遍歷鏈表,在遍歷鏈表的過程中會(huì)判斷是否存在當(dāng)前key,如果存在則更新value。當(dāng)遍歷完鏈表后,將新鏈表Node插入到鏈表中,插入到鏈表中后,會(huì)判斷當(dāng)前鏈表節(jié)點(diǎn)個(gè)數(shù),如果是大于8,那么則會(huì)將該鏈表轉(zhuǎn)成紅黑樹;

? ③:在將key和value封裝為Node插入到鏈表或紅黑樹中后,再判斷是否需要擴(kuò)容,如果需要擴(kuò)容就擴(kuò)容,不需要就結(jié)束put方法。

?????

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

本文題目:HashMap的put方法-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://bm7419.com/article18/dsssdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站制作、網(wǎng)站內(nèi)鏈域名注冊(cè)、做網(wǎng)站

廣告

聲明:本網(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)

成都網(wǎng)站建設(shè)公司