zgq105 / blog

2 stars 0 forks source link

关于hashCode和equals的总结 #23

Open zgq105 opened 5 years ago

zgq105 commented 5 years ago

hashCode是散列码,利用键值对存储数据,方便快速查找所需的对象。而equals用于判断两个对象的值是否相等,效率就比较低;简单的理解就是hashCode用于快速过滤刷选,只有hashCode存在相同的时候,才会调用equals方法进行下一步的比较。(hashCode主要缩小查找成本

  1. 如果两个对象相等,则hashcode一定也是相同的
  2. 两个对象相等,对两个对象分别调用equals方法都返回true
  3. 两个对象有相同的hashcode值,它们也不一定是相等的
  4. 因此,equals方法被覆盖过,则hashCode方法也必须被覆盖
  5. hashCode()的默认行为是对堆上的对象产生独特值。如果没有重写hashCode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)