HashMap內部數組長度為什么是2的冪次


  • 用&運算代替%運算,若不為2的冪次,內部數組會存在浪費

    index = (tab.length - 1) & hash

    此處輸入圖片的描述

    若不為2的冪次,則減一后低位必存在0,這樣相與后該位結果為0,那么在該位上為1的索引永遠用不到,數組存在浪費

  • 擴容時,方便定位

    此處輸入圖片的描述

    當相與的該位(圖中橘色的X)
    當相與的該位為0時,則結果不變,擴容后索引值不變
    當相與的該位為1時,則結果為原索引值加原數組長度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM