重写equals()方法为什么要重写hashcode()方法?
如果我们对一个对象重写了equals
,意思是只要对象的成员变量值都相等那么equals
就等于true
。但如果不重写hashcode
,那么我们再new
一个新的对象,当原对象.equals(新对象)
等于true
时,两者的hashcode
却是不一样的,由此将产生了理解的不一致,如在存储散列集合时(如Set
类),将会存储了两个值一样的对象,导致混淆,因此,就也需要重写hashcode()
。
重写equals()方法为什么要重写hashcode()方法?
如果我们对一个对象重写了equals
,意思是只要对象的成员变量值都相等那么equals
就等于true
。但如果不重写hashcode
,那么我们再new
一个新的对象,当原对象.equals(新对象)
等于true
时,两者的hashcode
却是不一样的,由此将产生了理解的不一致,如在存储散列集合时(如Set
类),将会存储了两个值一样的对象,导致混淆,因此,就也需要重写hashcode()
。