2019獨角獸企業重金招聘Python工程師標準>>>
我們知道,在新建一個HashMap對象時,無論傳的initialCapacity
參數值為多少,最總HashMap中數組的長度始終為2的n次方,代碼如下:
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;
}
>>>表示忽略符號右移,不足補0
假設cap的值為10,那么n的值為9,對應二進制值為1001 經過n |= n >>> 1;
計算,此時n對應的二進制值為1101 經過n |= n >>> 2;
計算,此時n對應的二進制值為1111 依次類推,最后n對應的二進制的值為1111,對應十進制為15 根據最后的三元運算,該方法的返回值為16,也就是2的4次方