HashMap里的hashcode和equals方法

博客探讨了HashMap中散列表的高速索引机制,强调了重写hashcode和equals方法的重要性。未重写时可能导致无法正确存取对象,而只重写hashcode可能导致equals判断失败,最终详细阐述了正确重写这两个方法的Key类实现。
摘要由CSDN通过智能技术生成

数据结构里的散列表高速索引的机制

  • 散列表有m个存储单元,H(key) = key%P,P选择小于m的最大素数
  • 长度为n的线性表,存放无序数据,平均查找时间是n/2
  • 引入hash函数(散列函数),关联数据和存储位置
  • 存取数据前,先用hash函数计算hash值,hash函数是X*X%5
  • HashMap来源于数据结构里的散列表

散列表里解决冲突的方法

  • 两个不同的值,有可能hash值相同,就引发冲突
  • 散列表有多种解决方法,HashMap里用到了“链地址法”

在HashMap里存储不带hashcode和equals的对象

  • 定义一个Key类,不重写hashcode和equals方法
  • 实际用到了Object类里的hashcode和equals
  • k1和k2的id都是1,用k1放,用k2取不出来
  • 实际上,期望用k2取出值
  • </
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值