Java 重寫hashCode() 時為什么要用 31 來計算


在OSChina 中看到了一篇文章《Java 中正確使用 hashCode 和 equals 方法》,看到 hashCode 的方法體內的31比較有意思。

在Stackoverflow上找到了解釋,但沒完全看明白,大概意思是說31這個值是一個奇素數,只是一個默認的傳統。並不一定要用31。但是這個數可以通過位移的方式來處理乘法,獲得一些性能上的優化,虛擬機會自動做這些優化。

Stackoverflow 引用地址:http://stackoverflow.com/questions/299304/why-does-javas-hashcode-in-string-use-31-as-a-multiplier

---

另外可以把 hashCode的計算結果保存到成員變量中,避免重復計算。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM