equals和hashCode

ゝ一世哀愁。 2023-09-25 18:34 199阅读 0赞

equals是比较两个对象是否一样。若类没有重写equals方法,则会使用Object类中的equals方法,Object中equals方法是==比较,是比较栈内存中的引用地址是否一样。若类中重写了equals方法,则比较的是两个对象的值是否一样。**hashCode方法,是获取哈希值。一个例子:栈内存是哈希表实现的,key-value的方式存储数据。若要往栈内存放入一个元素,会先计算哈希值,根据哈希值(key)去快速的找value,若没有value,则会放入;若有value,会进行equals比较,若不同会把数据散列到其它地方,若相同就会有冲突。例子中,若没有hashCode获取哈希值,会把栈内存中所有的value全部取出来进行equals比较,栈内存的性能会很差。有了哈希值,大大提高了性能**。**

注:重写equals方法,也要重写hashCode方法。因为比较两个对象是否相等是,会先判断哈希值是否一样,不一样才会执行equals方法。

发表评论

表情:
评论列表 (有 0 条评论,199人围观)

还没有评论,来说两句吧...

相关阅读

    相关 7、hashCodeequals

    hashCode介绍 hashCode() 的作用是获取哈希码,也称为散列码,它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCo

    相关 equalshashCode详解

    前几天在回顾Java基础知识的时候注意到了equals和hashCode这两个方法,仔细研究了一下瞬间就被为什么equals相等hashCode一定相等,为什么hashCode

    相关 equalshashCode

    equals是比较两个对象是否一样。若类没有重写equals方法,则会使用Object类中的equals方法,Object中equals方法是==比较,是比较栈内存中的引用地址

    相关 equalshashcode总结

    equals和hashcode总结: 1.equals方法没有重写的话,用于判断对象的内存地址引用是否是用一个地址。重写之后一般用来比较对象的内容是否相等(比如student