我已經在.NET中請求similar question瞭解string.GetHashCode()
方法。從那時起,我已經瞭解到,如果我們要在不同的機器上使用哈希代碼,我們不能依賴隱式實現哈希代碼。因此,我假設String.hashCode()
的Java實現在不同的硬件配置下也不穩定,並且可能在不同的虛擬機之間表現不同(不要忘記不同的虛擬機實現)羣集中的計算機之間的Java和string.hashCode()穩定性
目前我們正在討論一種安全地將字符串轉換爲通過哈希計算,但散列算法必須在羣集的不同節點上保持穩定,並且要快速評估,因爲使用頻率很高。我的隊友堅持使用原生方法,我需要一些合理的論據讓他們重新考慮另一種方法。目前,我只能想到機器配置(x86和x64)與可能不同的某些機器上JVM的供應商(我們的情況幾乎不適用)和字節順序差異(取決於算法所在的機器)之間的差異跑。當然,字符編碼也可能被考慮。儘管所有這些東西都出現在我的腦海中,但我不能100%肯定他們兩個都有足夠的理由,我很感謝你在這方面的專業知識和經驗。這將幫助我建立更有力的論據來支持編寫自定義哈希算法。此外,我很感謝什麼不執行實施它時。
字符串散列碼在任何Java平臺上定義良好且相同。 – ZhongYu
http://stackoverflow.com/questions/785091/consistency-of-hashcode-on-a-java-string – zch
@ zhong.j.yu你假設[JRockit](http://www.oracle.com /technetwork/middleware/jrockit/overview/index.html)和[IBM JVM](http://publib.boulder.ibm。com/infocenter/java7sdk/v7r0/index.jsp?topic =%2Fcom.ibm.java.lnx.70.doc%2Fuser%2Fjava_jvm.html)對'String#hashCode'具有相同的實現。 –