为什么 java 设计者强制要求 如果 obj1.equals(obj2) 那么 obj1.hashCode() 必须 == obj2.hashCode()
最佳答案
因为 HashMap 使用以下算法快速查找键:
- 获取参数中key的
hashCode()
- 从这个哈希码推导出桶
- 将存储桶中的每个键与参数中的键进行比较(使用
equals()
)以找到正确的键
如果两个相等的对象没有相同的散列码,则该算法的前两步将无法运行。正是这两个第一步使 HashMap 变得非常快 (O(1))。
关于java - 为什么 java 设计者强制要求 if obj1.equals(obj2) then obj1.hashCode() MUST Be == obj2.hashCode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11633758/