为什么在重写equals方法时都要重写hashcoe方法

2022-05-12 11:34:58 浏览数 (1)

忘记了下边的解释原创在哪了,但是真一针见血

对象默认都是继承Object对象的。

精辟的解释

object的equals默认是比较内存地址,hashcode默认是内存地址的哈希值,如果equals重写了,他为true时两个对象并不一定内存地址一样,这个时候,如果不重写hashcode,那么他会默认用object的hashcode方法,所以他们的hashcode值是不一样的。就导致两个对象equals相等但是hashcode不相等,这个对象应用在hashmap作为key时他们是先判断hashcode是否相等再比较equals,不相等就为不同的key,所以这样的对象不能应用在hashmap和set里作为key。

0 人点赞