为什么重写equals()方法一定要重写hashCode()方法 —Object类所有类的超类
一、为什么重写equals()方法一定要重写hashCode()方法
想要接受这个问题我们必须了解一下三个对象
==在引用数据类型当中进行的是地址的比较,equals()方法在Object类当中其底层也是用==比较地址,但是不同的类可能会重写equals()方法,比如String类中的equals()方法就是先比较地址是否相同,如果相同直接返回true,地址不同在比较值,如果值相等那么同样返回true();
如果重写equals,一定要重写hashcode方法。为什么?因为在使用hashmap的时候,需要equals和hashcode合作。在hashmap中怎么样合作的?hashmap中的key值判断相等需要用到equals(),hashmap存储的时候需要用到hashcode(),key一样的对象会根据hashcode分配到同一个桶。
hashCode()方法
我们首先观察一个这个方法,它本身其实是一个native方法,他使用c++实现的,我们暂时可以将其理解为它将我们的对象的地址映射为一个int类型的数据。
明白了这
为什么重写equals()方法一定要重写hashCode()方法 —Object类所有类的超类最先出现在Python成神之路。
共有 0 条评论