其实原因很简单,首先第一点原因就是约定,就是说两个对象equals返回true,那么他们的hashcode也应该相等,但其实这一点约定我们不遵守也无妨,下面的原因才是主要的。
如果我们将一个类作为hashmap的key,那么在hash的时候是根据hashcode进行hash的,而且hashmap又要求相同元素不能重复插入,那么如果hashcode不相等就会映射到不同的桶中。这时候我们判断是否插入了重复元素就会出现问题
因此,一般在重写equals的时候就要重写hashcode。
其实原因很简单,首先第一点原因就是约定,就是说两个对象equals返回true,那么他们的hashcode也应该相等,但其实这一点约定我们不遵守也无妨,下面的原因才是主要的。
如果我们将一个类作为hashmap的key,那么在hash的时候是根据hashcode进行hash的,而且hashmap又要求相同元素不能重复插入,那么如果hashcode不相等就会映射到不同的桶中。这时候我们判断是否插入了重复元素就会出现问题
因此,一般在重写equals的时候就要重写hashcode。