1. 程式人生 > >hashmap 之雜湊衝突

hashmap 之雜湊衝突

HashMap集合的預設容量為什麼是16而不是15?

假設有兩個key的hash值為8、9;

--容量16--

8 &(16-1)

1000 & 1111 = 1000 =>8號位置

9 &(16-1)

1001 & 1111 = 1001 =>9號位置

--容量15--hash衝突,碰撞

8 &(15-1)

1000 & 1110 = 1000 =>8號位置

9 &(15-1)

1001 & 1110 = 1000 =>8號位置

因為key值相同所以需要計算下一個位置影響效能

以及浪費所有key的末位為1的儲存空間