Possible Duplicate:
why do String.hashCode() in java is not implemented in a way with less conflicts?
对于非加密哈希,Java 的 String.hashCode()
是如何实现的?执行?
我主要担心碰撞。
谢谢。
最佳答案
你似乎误解了什么.hashCode()
是关于 Java 的,更具体地说,是 .equals()
/.hashCode()
由 java.lang.Object
指定的契约(Contract).
对任何人来说,物质契约的唯一部分是,如果两个对象在.equals()
方面是相等的。 ,那么它们必须具有与 .hashCode()
返回的相同的哈希码。 。 该契约(Contract)没有其他义务。
因此,编写自定义 .hashCode()
是完全合法的。像这样的实现,尽管这并不像人们能想到的那么理想:
@Override
public int hashCode()
{
// Legal, but useless
return 42;
}
当然,JDK开发人员永远不会那么厚,并且.hashCode()
内置类型(包括 String
)的实现已经足够好,您甚至不需要担心冲突。即使如此,这种实现很可能会因一种 JDK 实现而异,其“加密值(value)”也将有所不同。
但这不是重点。
要考虑的最重要的事情是 .hashCode()
与密码学完全无关。它唯一的义务是遵守java.lang.Object
定义的契约(Contract)。 .
关于java - Java 中的 String.hashCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14167601/