hashmap中的tableSizeFor(int)

static final int tableSizeFor(int cap) {
        int n = cap - 1;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }

這個函數的功能是:輸入一個數,求出與之最近的2次冪的整數,比如輸入5,會輸出8

cap=0101

n=0100

無符號右移1位0010   經過異或運算後---》0110

無符號右移2位0001  經過異或運算後--》0111

無符號右移4位 0000 經過異或運算後-》》0111

。。。。

最後經過右移和異或運算後得出來是0111

最後+1 得1000=8

 

發佈了73 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章