equals方法与hashcode方法

  • 在Java中,equals方法和hashcode方法都是用来对比两个对象是否相等。
  • 默认情况下equals比较的是两个对象的哈希码,hashcode则负责获取引用对象的哈希码。一般情况下,在覆盖equals方法时,同时也要覆盖hashcode方法。
  • 不同对象可能有相同的哈希码,因为自身算法的原因,所以当a.equals(b) == true(对象值相同)时,两个对象一定相等,但是如果两个对象的哈希码相等却不能断定两个对象是相等的。

equals和hashcode的使用在集合框架Set中有体现:

  • 将对象放入到集合中时,首先判断要放入对象的hashCode值与集合中的任意一个元素的hashCode值是否相等。
  • 如果不相等直接将该对象放入集合中。如果hashCode值相等,然后再通过equals方法判断要放入对象与集合中的任意一个对象是否相等,如果equals判断不相等,直接将该元素放入到集合中,否则不放入。

具体流程如下图所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40374341/article/details/85250055