国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當(dāng)前位置:首頁 > 科技  > 軟件

HashMap 的基礎(chǔ)結(jié)構(gòu),必須掌握!

來源: 責(zé)編: 時間:2023-09-18 21:42:01 424觀看
導(dǎo)讀HashMap 是一種散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。在 HashMap 中,每個鍵(key)映射到一個值(value)。散列表的工作原理是:當(dāng)通過 put() 方法將鍵值對存儲在 HashMap 中時,HashMap 首先會根據(jù)鍵的 hashCode 值來

2xg28資訊網(wǎng)——每日最新資訊28at.com

HashMap 是一種散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。在 HashMap 中,每個鍵(key)映射到一個值(value)。散列表的工作原理是:當(dāng)通過 put() 方法將鍵值對存儲在 HashMap 中時,HashMap 首先會根據(jù)鍵的 hashCode 值來計算出存儲位置,然后將鍵值對存儲在該位置上。當(dāng)通過 get() 方法獲取鍵值對時,HashMap 再根據(jù)鍵的 hashCode 值來獲取存儲位置,然后返回該位置上的值。2xg28資訊網(wǎng)——每日最新資訊28at.com

hash算法的優(yōu)化:對每個hash值,在它的低16位中,讓高低16位進行異或,讓它的低16位同時保持了高低16位的特征,盡量避免一些hash值后續(xù)出現(xiàn)沖突,大家可能會進入數(shù)組的同一位置。2xg28資訊網(wǎng)——每日最新資訊28at.com

2xg28資訊網(wǎng)——每日最新資訊28at.com

對尋址算法的優(yōu)化2xg28資訊網(wǎng)——每日最新資訊28at.com

(p = tab[i = (n - 1) & hash]   // (n-1) & hash ==> 數(shù)組里的一個位置

hash & (n-1) 效果是跟hash對n取模是一樣的,但是與運算的性能要比hash對n取模要高很多。數(shù)組的長度會一直是2的n次方,只要他保持?jǐn)?shù)組長度是2的n次方。2xg28資訊網(wǎng)——每日最新資訊28at.com

  • 尋址為什么不用取模?

對于上面尋址算法,由于計算機對比取模,與運算會更快。所以為了效率,HashMap 中規(guī)定了哈希表長度為 2 的 k 次方,而 2^k-1 轉(zhuǎn)為二進制就是 k 個連續(xù)的 1,那么 hash & (k 個連續(xù)的 1) 返回的就是 hash 的低 k 個位,該計算結(jié)果范圍剛好就是 0 到 2^k-1,即 0 到 length - 1,跟取模結(jié)果一樣。2xg28資訊網(wǎng)——每日最新資訊28at.com

也就是說,哈希表長度 length 為 2 的整次冪時, hash & (length - 1) 的計算結(jié)果跟 hash % length 一樣,而且效率還更好。2xg28資訊網(wǎng)——每日最新資訊28at.com

  • 為什么不直接用 hashCode() 而是用它的高 16 位進行異或計算新 hash 值?#

int 類型占 32 位,可以表示 2^32 種數(shù)(范圍:-2^31 到 2^31-1),而哈希表長度一般不大,在 HashMap 中哈希表的初始化長度是 16(HashMap 中的 DEFAULT_INITIAL_CAPACITY),如果直接用 hashCode 來尋址,那么相當(dāng)于只有低 4 位有效,其他高位不會有影響。這樣假如幾個 hashCode 分別是 210、220、2^30,那么尋址結(jié)果 index 就會一樣而發(fā)生沖突,所以哈希表就不均勻分布了。2xg28資訊網(wǎng)——每日最新資訊28at.com

尋址算法的優(yōu)化:用與運算替代取模,提升性能。(由于計算機對比取模,與運算會更快)。2xg28資訊網(wǎng)——每日最新資訊28at.com

在 JDK1.8 中,HashMap 的結(jié)構(gòu)由數(shù)組和鏈表(或紅黑樹)組成。數(shù)組是 HashMap 的主體,鏈表和紅黑樹則是為了解決哈希沖突而存在的。從上圖可以看出,HashMap 由一個個 Node 節(jié)點組成,每個節(jié)點包含了鍵值對的信息,以及指向下一個節(jié)點的指針。HashMap 內(nèi)部維護了一個數(shù)組 table,每個元素都是一個鏈表的頭節(jié)點(或者是一個紅黑樹的根節(jié)點),當(dāng)多個鍵映射到同一個位置時,它們會被存儲在同一個鏈表中(或者是同一個紅黑樹中)。當(dāng)鏈表長度超過閾值(默認(rèn)為 8)時,鏈表就會被轉(zhuǎn)換成紅黑樹(如下圖),這樣可以提高查找效率。如果紅黑樹的節(jié)點數(shù)小于等于6,那么就將紅黑樹轉(zhuǎn)換回鏈表,以節(jié)省空間。2xg28資訊網(wǎng)——每日最新資訊28at.com

2xg28資訊網(wǎng)——每日最新資訊28at.com

轉(zhuǎn)換紅黑樹2xg28資訊網(wǎng)——每日最新資訊28at.com

在 JDK1.8 中,HashMap 還引入了一個新的概念,叫做負(fù)載因子(load factor),它是指哈希表中鍵值對的數(shù)量與數(shù)組長度的比值。當(dāng)鍵值對的數(shù)量超過了負(fù)載因子與數(shù)組長度的乘積時,就會觸發(fā)擴容操作,HashMap 會自動將數(shù)組長度擴大一倍,并將原來的鍵值對重新分配到新的數(shù)組中。這樣做的目的是為了保證散列表的性能,因為當(dāng)負(fù)載因子過高時,散列表的性能會急劇下降。2xg28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-10477-0.htmlHashMap 的基礎(chǔ)結(jié)構(gòu),必須掌握!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 別再用 “! = null” 做判空了!

下一篇: 游戲引擎項目 Godot 成立開發(fā)基金

標(biāo)簽:
  • 熱門焦點
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
亚洲欧美久久久| 性色一区二区| 国产综合久久久久久鬼色| 中文av一区二区| 久久天天做天天爱综合色| 欧美午夜精品理论片a级按摩| 国产高清亚洲一区| 久久精品国产久精国产| 一区二区不卡在线播放| 中国色在线观看另类| 国产高清精品网站| 国产成人精品免费网站| 亚洲国产精品久久不卡毛片| 日本aⅴ免费视频一区二区三区| 久久精品30| 亚洲一区二区精品在线| 亚洲午夜激情| 欧美日韩综合精品| av在线免费不卡| 国产精品成人一区二区艾草| 亚洲欧美在线视频| 国产性做久久久久久| 综合电影一区二区三区 | 在线播放不卡| 欧美激情日韩| 成人久久18免费网站麻豆| 蜜臀a∨国产成人精品| 亚洲精品欧美综合四区| 亚洲免费在线视频| 亚洲美女视频一区| 亚洲一区在线看| 中文字幕免费观看一区| 国产精品久久夜| 成人欧美一区二区三区在线播放| 国产精品你懂的| 亚洲三级在线免费观看| 欧美不卡视频一区| 久久久久久久久伊人| 欧美激情中文不卡| 五月激情综合婷婷| 久久电影网站中文字幕| 久久久久久久波多野高潮日日| 亚洲一级影院| 亚欧成人精品| 在线一区二区三区四区五区| 日韩精品资源二区在线| 国产精品色噜噜| 久久精品国产精品亚洲综合| 看电视剧不卡顿的网站| 亚洲精品乱码久久久久久| 日日嗨av一区二区三区四区| 国内精品免费**视频| 激情久久久久久久| 久久精品首页| 日韩欧美国产成人一区二区| 国产三级精品在线| 国产精品久久久久精k8| 久久综合国产精品| 一区二区三区四区亚洲| 美女诱惑一区二区| 麻豆极品一区二区三区| 91性感美女视频| 色噜噜狠狠成人中文综合| 欧美sm美女调教| 亚洲免费观看高清完整| 美女视频网站久久| 欧美精品国产| 中文精品视频| 欧美一级黄色大片| 亚洲日本中文字幕区| 国产精品主播直播| 日韩亚洲国产精品| 色94色欧美sute亚洲线路一ni | 成人avav在线| 国产一区二区你懂的| 在线精品观看国产| 久久先锋影音| 欧美韩日一区二区三区四区| 日本在线观看不卡视频| 亚洲人成久久| 日韩欧美不卡在线观看视频| 日韩电影在线观看一区| 欧美日韩三级电影在线| 国产精品v一区二区三区| 欧美精品一卡两卡| 中文字幕国产一区| 国产乱妇无码大片在线观看| 91久久精品www人人做人人爽| 欧美丰满美乳xxx高潮www| 亚洲在线观看免费| 色综合色综合色综合| 欧美精选一区二区| 中文一区二区完整视频在线观看| 国产精品无人区| 国产一区二区三区黄视频| 欧美~级网站不卡| 欧美一区二区高清| 捆绑变态av一区二区三区| 精品一区二区在线看| 国产视频在线观看一区| 国产午夜精品久久久久久免费视 | 午夜免费久久看| 欧美日韩hd| 51久久夜色精品国产麻豆| 精品在线一区二区三区| 99热在线精品观看| 久久婷婷色综合| 国产成人午夜精品5599| 在线综合视频| 亚洲小说春色综合另类电影| 伊人天天综合| 精品久久久三级丝袜| 久久电影网站中文字幕| 午夜影院日韩| 亚洲激情av在线| 国产成人综合亚洲网站| 日韩精品一区二| 粉嫩一区二区三区性色av| 欧美性生活久久| 久久精品国产免费| 在线免费不卡电影| 久久国产福利国产秒拍| 中文字幕在线不卡视频| 国产91精品一区二区麻豆亚洲| 欧美日韩亚洲综合| 日韩综合小视频| 色哟哟精品一区| 天天影视网天天综合色在线播放| 午夜在线一区二区| 偷拍日韩校园综合在线| 日本黄色一区二区| 一区二区三区在线观看网站| 欧美日韩在线观看一区二区三区| 中文一区一区三区高中清不卡| 欧美另类视频| 最近中文字幕一区二区三区| 亚洲精品一区二| 亚洲图片一区二区| 国产亚洲福利| 午夜久久久久久电影| 欧洲精品一区二区| 亚洲精品国久久99热| 免费日韩视频| 精品写真视频在线观看| 日韩精品一区二区三区四区视频| 日欧美一区二区| 国产精品三区www17con| 一区二区三区波多野结衣在线观看 | 国产一区二区三区综合| 欧美理论在线播放| 国产精品不卡视频| 久久aⅴ乱码一区二区三区| 久热成人在线视频| 亚洲少妇最新在线视频| 久久免费国产| 欧美va天堂在线| 亚洲国产综合91精品麻豆| 91精品国产综合久久福利软件| 午夜精品影院| 日韩精品一区二区三区四区| 在线观看日韩av电影| 亚洲永久免费视频| 久久综合五月天婷婷伊人| 亚洲人成久久| 国产精品香蕉一区二区三区| 中文字幕在线不卡视频| 国产视频一区在线观看一区免费| 日本成人在线电影网| wwwwxxxxx欧美| 香蕉久久国产| av在线一区二区| 婷婷综合五月天| 国产亚洲婷婷免费| 717成人午夜免费福利电影| 在线观看成人av电影| 成人国产精品免费观看| 一区二区视频在线看| 91精品婷婷国产综合久久| 欧美国产视频在线观看| 亚洲天堂网中文字| 欧美日韩成人| 精品一区二区三区免费毛片爱| 日韩女同互慰一区二区| 99久久久久久| 三级精品在线观看| 日韩亚洲欧美中文三级| 精品动漫一区| 成人免费看的视频| 亚洲成在线观看| 国产精品素人视频| 欧美日本视频在线| 色综合天天狠狠| 国产一区二区三区蝌蚪| 一区二区免费视频| 日韩午夜av电影| 99国产精品| 久久97超碰色| 天堂在线亚洲视频| 亚洲丝袜制服诱惑| 国产日韩精品视频一区|