HashMap内部数组长度为什么是2的幂次


  • 用&运算代替%运算,若不为2的幂次,内部数组会存在浪费

    index = (tab.length - 1) & hash

    此处输入图片的描述

    若不为2的幂次,则减一后低位必存在0,这样相与后该位结果为0,那么在该位上为1的索引永远用不到,数组存在浪费

  • 扩容时,方便定位

    此处输入图片的描述

    当相与的该位(图中橘色的X)
    当相与的该位为0时,则结果不变,扩容后索引值不变
    当相与的该位为1时,则结果为原索引值加原数组长度


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM