java - 为什么 hashCode() 和 equals() 都存在

标签 java

为什么 java Object 类有两个方法 hashcode() 和 equals()?其中一个看起来多余并且渗透到最底层的派生类?

最佳答案

为什么你认为一个是多余的?他们说不同的话:

  • hashCode 是“给我一些有效查看两个对象是否可能相等的方法”
  • equals 是“检查这个对象是否真的等于另一个”

你绝对需要两者 - although I don't believe they should really be in Object in the first place .

为了使用哈希表执行高效查找,您绝对需要哈希码 - 而且您绝对需要进一步的相等性检查,因为哈希发生冲突(例如,可能的字符串比哈希码多得多) .

关于java - 为什么 hashCode() 和 equals() 都存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469282/

相关文章:

Java HttpURLConnection VS Android HttpURLConnection

java - Android - println 需要一条消息

java - 错误java.io.FileNotFoundException,读取网页

java - 我应该在哪里放置构造函数的公共(public)代码?

Java Card 从数组中读取数据

java - 如何舍入浮点精度,考虑它的大小?

java - 将 Web 方面添加到项目而不创建 EAR

java - Android R.java 未生成并出现以下错误

java - Android 中的线程问题

java - 动态链接 : Class not visible to ClassLoader, 但我已经尝试过每一个?