hashCode和equals方法

74 阅读1分钟

hashCode和equals区别

  • hashCode效率高,但不够准确(可能出现hash冲突)
  • equals方法准确,但是效率较低 因此先采用hashCode比较,然后在采用equals方法比较,这种比较方案提高了效率还保持了准确性,所以原则上有hashCode不同则equals一定不同;equals相同则hashCode一定相同。

在HashMap、HashSet等集合中比较对象时,都会先比较对象的hash值,然后调用equals方法进行比较,这种比较方法大大提高了比较的效率。

为什么重写equals,必须要重写hashCode?

如果理解了上面的文字,答案就非常显而易见了!

  1. hashCode极大地提高比较对象时的效率,减少了采用equals方法比较的次数
  2. 避免出现equals相等而hashCode不相等的情况。