如果重写了equals就必须重写hashCode,如果不重写将引起与散列集合(HashMap、HashSet、HashTable、ConcurrentHashMap)的冲突
例如定义两个对象,值相等,equals重写了,但是hashcode没有重写,那么此刻,equals得出相等,但是hashcode得出不相同。如果我们把这两个值存进hashMap时,那么都可以存进,但是hashMap规定了key是不能重复的,所以这就产生了问题。所以我们必须重写hashcode,以让当equals相同时,hashcode也必须相同,这时候当两个值都存进hashMap时,会自动去重。根据业务状况重写equals后,一定要将hashCode用一定相同的规则做hash,防止在一些需要用到对象hashCode的地方造成误会,引发问题。
为什么重写equals方法还要重写hashCode方法
最新推荐文章于 2024-06-12 23:40:32 发布