hashcode和equals的区别

hashcode和equals的区别,第1张

hashcode和equals的区别

equals:反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值。

hashCode:计算出对象实例的哈希码,并返回哈希码,又称为散列函数。

hashcode:对象的初始地址的整数表示

Java中的对象是JVM在管理,JVM会在她认为合适的时候对对象进行移动,比如,在某些需要整理内存碎片的GC算法下发生的GC。此时,对象的地址会变动,但hashcode不会改变。

1.hashCode是为了提高在散列结构存储中查找的效率,在线性表中没有作用。

2.一般一个类的对象如果会存储在HashTable,HashSet,HashMap等散列存储结构中,那么重写equals后最好也重写hashCode,否则会导致存储数据的不唯一性(存储了两个equals相等的数据)。而如果确定不会存储在这些散列结构中,则可以不重写hashCode。

3.若两个对象equals返回true,则hashCode有必要也返回相同的int数。

4.若两个对象equals返回false,则hashCode不一定返回不同的int数,但为不相等的对象生成不同hashCode值可以提高哈希表的性能。

5.若两个对象hashCode返回相同int数,则equals不一定返回true。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/5412444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-10
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存