【发布时间】:2020-07-06 10:49:43
【问题描述】:
我需要比较两个大字符串。与其使用这样的equals方法,有没有像hashCode之类的方法或为String生成唯一ID的方法? 那是因为我的字符串非常大。另外,我需要不同的内容唯一 ID。是否可以出于我的目的在 String 中使用hashCode。
【问题讨论】:
-
这能回答你的问题吗? Why do I need to override the equals and hashCode methods in Java?。简短回答:String 已经实现了快速
hashCode(),用于加快比较速度。 :) 但是hashCode()不是唯一的,所以你不能避免有时调用equals()。 -
您最好只使用UUID 类来生成唯一标识符。
-
UUID 不能用于比较字符串。没有哈希码也不起作用,尽管在许多情况下它们会加快比较速度,但您必须比较整个字符串以确定字符串是否相等(不相等的字符串虽然会很快比较为假)。
-
另外,我想得越多,它似乎越是过早的优化。字符串比较通常检查的第一件事是长度,这是一个非常快速的操作。 “让它更快”的复杂系统可能是不需要的,甚至会使代码变慢。首先分析代码,然后仅在整个系统运行时才需要添加复杂性。
标签: java hashcode hash-code-uniqueness