Java重写equals方法就必须重写HashCode方法,这是为什么呢?
我们知道,
HashCode
这个方法主要是去生成的唯一标识符,equals
是我们在做比较,两个对象是不是一样。往往在业务中,我们需要判断两个业务对象的数据是不是一样的,所以我们需要用HashCode
生成一个唯一标识符然后用Equals
去做比较。
比如
因为Set
存储的是不重复对象,依据hashCode
和equals
方法进行判断,所以Set
存储的对象必须重写这两个方法。如果自定义对象作为Map
的键,那么必须重写hashcode
和equals
。
例子:String
重写了hashCode
和equals
方法,所以我们可以非常愉快的使用String
对象作为 key 来使用.