中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HashMap的長度為什么是2的冪次方

發布時間:2021-12-08 17:27:23 來源:億速云 閱讀:128 作者:柒染 欄目:大數據

本篇文章為大家展示了HashMap 的長度為什么是2的冪次方,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

為了能讓 HashMap 存取高效,盡量較少碰撞,也就是要盡量把數據分配均勻。我們上面也講到了過了,Hash 值的范圍值-2147483648到2147483647,前后加起來大概40億的映射空間,只要哈希函數映射得比較均勻松散,一般應用是很難出現碰撞的。但問題是一個40億長度的數組,內存是放不下的。所以這個散列值是不能直接拿來用的。用之前還要先做對數組的長度取模運算,得到的余數才能用來要存放的位置也就是對應的數組下標。這個數組下標的計算方法是“ (n - 1) & hash”。(n代表數組長度)。這也就解釋了 HashMap 的長度為什么是2的冪次方。

這個算法應該如何設計呢?

我們首先可能會想到采用%取余的操作來實現。但是,重點來了:“取余(%)操作中如果除數是2的冪次則等價于與其除數減一的與(&)操作(也就是說 hash%length==hash&(length-1)的前提是 length 是2的 n 次方;)。” 并且 采用二進制位操作 &,相對于%能夠提高運算效率,這就解釋了 HashMap 的長度為什么是2的冪次方。

上述內容就是HashMap 的長度為什么是2的冪次方,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灌阳县| 鄄城县| 凉山| 道孚县| 濮阳市| 汝南县| 彭山县| 威海市| 高雄县| 连山| 广东省| 磐安县| 威宁| 乳山市| 湟中县| 东乌珠穆沁旗| 东乌| 灵武市| 视频| 兰溪市| 光泽县| 石渠县| 资兴市| 宁南县| 屯昌县| 丁青县| 永顺县| 化州市| 辽宁省| 定襄县| 山丹县| 甘洛县| 松潘县| 富裕县| 大姚县| 邻水| 平泉县| 克拉玛依市| 天全县| 云和县| 宣威市|