我需要比较两个大字符串。与其使用这样的equals方法,有没有像hashCode这样的方法或为String生成唯一ID的方法?那是因为我的字符串非常大。另外,我需要不同的内容唯一 ID。出于我的目的,是否可以在 String 中使用hashCode 。
问问题
97 次
1 回答
1
的目的hashCode
是提供一种快速的方法来识别两个对象比较不相等的大多数情况。在大多数情况下,误报率为 1% 的哈希函数被认为优于误报率为 0% 但耗时两倍的哈希函数。
有一些散列函数被设计用作“摘要”,这样两个任意长度的不同字符串将非常不太可能有相同的摘要。然而,为了非常有效,摘要需要比 32 位哈希码值大得多。一个精心设计的 64 字节(512 位)摘要通常足以保护任何长度的字符串,以至于一个人在同一个周末被闪电击中两次的可能性更大,因为一个人赢得了五个州彩票而不是找到两个产生相同摘要的不同字符串。为一个字符串计算一个好的摘要函数的成本将远大于将该字符串与另一个字符串进行比较的成本,但是如果将每个字符串与许多其他字符串进行比较,则计算每个摘要函数一次并将其与每个字符串的摘要进行比较其他字符串可能会带来重大的性能胜利。
于 2020-03-25T20:18:32.747 回答