我已经在.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'具有相同的实现。 –