HashMap的數組長度爲何必須是2的n次方

  • 擴容方便,數字位移計算方便效率高;
  • 計算元素下標使用的方式是key的hash & (數組length - 1),由於length2^n,轉換成二進制後2^-1最低位就全部都是1,比如111,就相當於是數組長度的掩碼,那麼hash & 111就可以將數組的每一位都覆蓋,加入數組長度不是2^n,那麼length-1低位不全是1,比如101,那麼hash & 101就會出現數組有的位置永遠都不會有值。
  • 擴容的時候一條鏈表最多映射到兩條鏈表上,計算效率高
  • 2^n長度設計hash算法比較容易實現散列比較均勻
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章