在網上看到很多答案,主要說的是2^n-1是個奇數,能夠保證hash值和它&運算的時候結構的奇偶性由hash值決定。
為什么不是因為2^n-1得到的是一個每一位都為1的二進制數,它和任何一個數與運算的結果都是截取該數的低n-1位。這樣才等價于hash%length的運算(length即為n)。此外選取2^n作為hash陣列的長度,這樣還有一個好處。因為擴容的時候是變為原來的2倍,只需要進行左移一位運算就能得到新陣列長度,也有一點加速作用。
大家的看法呢???
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251889.html
標籤:Java SE
上一篇:java
下一篇:request.getSession().getServletContext().getRealPath("")獲取不到工程目錄的問題!!!!
