个人觉得主要是作用于哈希结构,如hashmap等。
将一个键值对对象存入hashmap中,首先对键值进行hashcode,通过返回的整数定位到存储键的桶,由于hash冲突的存在,可能导致不同的键hashcode是一样的,因此需要对该桶上的链表进行equals遍历判断。如果重写equals而没有重写hashcode,可能因为两个相同对象(指两个对象的属性值都相同)的hashcode不同,导致其没有进入同一个桶,被判定为两个不同对象(尽管它们的equals是相等的)。请评论区大神多多指教!!!
相关文章
- 03-29set集合存对象的时候是如何判断是不是同一个对象,其中含有重写equals方法和hashcode方法 后续
- 03-29关于重写equals和hashcode的一些理解
- 03-29对象作为HashMap的键为什么要重写equals方法和hashCode方法
- 03-29关于React的Fiber的一些理解和总结
- 03-29总结,为什么要重写hashset的hashcode()和equals()?
- 03-29Unity3d关于Gameobject ,gameObject,Transform,transform的区别和关联的一些个人理解
- 03-29内存泄漏避雷!你真的了解重写equals()和hashcode()方法的原因吗?
- 03-29Python中面向对象的一些关于私有变量和继承的理解
- 03-29【转】 关于寄存器ESP和EBP的一些理解
- 03-29关于python中可迭代对象和迭代器的一些理解