gpt4 book ai didi

java - 为什么 java 设计者强制要求 if obj1.equals(obj2) then obj1.hashCode() MUST Be == obj2.hashCode()

转载 作者:搜寻专家 更新时间:2023-11-01 04:04:42 24 4
gpt4 key购买 nike

为什么 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com