HashMap初始化集合大小的算法

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;
}

HashMap初始化大小一定是2的n次冪,如果入參不是2的n此冪,則返回參數是下一個2的n次冪。

例如:

入參:3  返回:4

入參:5 返回:8

入參:16 返回:16

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章