Java 是否可以使用hashCode作为内容唯一ID?

Java 是否可以使用hashCode作为内容唯一ID?,java,hashcode,hash-code-uniqueness,Java,Hashcode,Hash Code Uniqueness,我需要比较两个大字符串。有没有像hashCode或其他类似的方法来生成字符串的唯一id,而不是使用像那样的equals方法? 那是因为我的绳子很大。此外,我需要不同的内容唯一Id。这是否可以在字符串中用于我的目的。hashCode的目的是提供一种快速方法,用于识别两个对象比较不相等的大多数情况。在大多数情况下,误报率为1%的散列函数被认为比误报率为0%的散列函数优越,但所需时间是前者的两倍 有些哈希函数被设计为用作“摘要”,因此任意长度的两个不同字符串不太可能具有相同的摘要。但是,为了非常有效,

我需要比较两个大字符串。有没有像hashCode或其他类似的方法来生成字符串的唯一id,而不是使用像那样的equals方法?
那是因为我的绳子很大。此外,我需要不同的内容唯一Id。这是否可以在字符串中用于我的目的。

hashCode的目的是提供一种快速方法,用于识别两个对象比较不相等的大多数情况。在大多数情况下,误报率为1%的散列函数被认为比误报率为0%的散列函数优越,但所需时间是前者的两倍


有些哈希函数被设计为用作“摘要”,因此任意长度的两个不同字符串不太可能具有相同的摘要。但是,为了非常有效,摘要需要比32位哈希代码值大得多。一个设计良好的64字节(512位)摘要通常足以保护任意长度的字符串,以至于在同一个周末,当一个人赢得五次州彩票时,他更有可能被闪电击中两次,而不是找到产生相同摘要的两个不同字符串。为一个字符串计算一个好的摘要函数的成本要比将该字符串与另一个字符串进行比较的成本大得多,但是如果将每个字符串与许多其他字符串进行比较,计算每个摘要函数一次,并将其与其他字符串的摘要进行比较,可能会带来重大的性能提升。

这是否回答了您的问题。简短回答:字符串已经实现了fast
hashCode()
,用于加快比较速度。:)但是,
hashCode()
不是唯一的,因此有时无法避免调用
equals()
。最好只使用该类生成唯一标识符。UUID无法用于比较字符串。没有哈希代码也不会工作,尽管在许多情况下它们会加快比较速度,但您必须比较整个字符串以确定字符串是否相等(虽然不相等的字符串会很快比较为false)。此外,我越是考虑这一点,似乎越是过早优化。字符串比较通常检查的第一件事是长度,这是一个非常快速的操作。可能不需要“使其更快”的复杂系统,甚至可能使代码更慢。首先分析代码,然后在整个系统运行时仅在需要时添加复杂度。