equals和hashcode区别,hashcode的作用,与equal有什么关系

  equals和hashcode区别,hashcode的作用,与equal有什么关系

  如何解决写爬虫IP受阻的问题?立即使用。

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

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

  HashCode用于提高哈希结构存储中搜索的效率,在线性表中没有作用。

  一般来说,如果一个类的对象会存储在HashTable、HashSet、HashMap等哈希存储结构中。最好重写equals后再重写hashCode,否则会导致存储数据的唯一性(存储两个相等equals的数据)。并且如果确定它将不被存储在这些散列结构中,则散列码可以不被重写。

  如果两个对象等于return true,hashCode就有必要返回相同的int数。

  如果两个对象等于返回false,hashCode不一定返回不同的int数,但是为不相等的对象生成不同的hashCode值可以提高哈希表的性能。

  如果两个对象hashCode返回相同的int数,那么equals不一定返回true。

  如果两个对象hashCode返回不同的int数,那么equals必须返回false。

  如果在执行过程中集合中已经存储了同一个对象,则不能修改影响hashCode值的相关信息,否则会导致内存泄漏。

  一般来说,当涉及到对象之间的比较时,需要重写equals方法。

  推荐教程:《java教程》以上是hashcode和equals区别的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: