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

被折叠的 条评论
为什么被折叠?