1.8HashMap源碼之:HashMap的數(shù)組長(zhǎng)度為什么設(shè)置成2的N次方

  1. 源碼

    if ((p = tab[i = (n - 1) & hash]) == null)
     tab[i] = newNode(hash, key, value, null);
    // n代表數(shù)組的長(zhǎng)度
    
  2. HashMap1.8數(shù)組默認(rèn)初始長(zhǎng)度為16,每次擴(kuò)容2倍

    以數(shù)組長(zhǎng)度16為例,其二進(jìn)制數(shù)為 10000,減1后為 01111,

    數(shù)組下標(biāo) i = (n - 1) & hash 的最大值 為15。

    以此類推,2的N次方,其地位都是1,可以保證在經(jīng)過(guò)與key的hash值的&運(yùn)算之后,下標(biāo)在[0,2^n-1]之中,是個(gè)正確的下標(biāo)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容