[笔记]为什么hashmap查询速度快? 如何理解hashmap的散列?

举个例子,通讯录 a-z 进行分组,2万个好友,如果不进行分组,最差的时候要查2万次,平均找1万次,那么通过建立索引,要提高很多倍了。

但是我要跟大家说一个笑话,如果你的好友全是你的子孙,全跟你姓,那结果还是一样的 哈哈,除非不用姓。

那么 hashmap 是通过hashcode进行散列,hashcode 是如何分组不得而知,但是原理也是一样,尽可能的平均分布 均匀,比如1万个数据如果 只有10个组,或者说 100个组里面数据全部在 第一个组,这效率还是一样 速度比简单粗暴的list 更慢了,为什么速度更慢了?

比如1万个数据 分了100个组,但是数据在 第100组,是不是要查找100个组 然后找了100个组还不够,还要继续 循环1万次,这速度当然是没有提升反而更慢了。

那么这速度 平均1万次变成100*1万了,搞毛线

image.png

再谈谈a-z的排序是否适合中文吧

image.png

我们中国有很多姓 ,但是有些字母似乎是用不到,但是如果用姓进行排序,那就可怕了,开个玩笑,over.纯笔记,非论文

hashmap 是如何实现散列的呢??算法, hashcode和内存地址关联,内存地址是有序的,比如22g那肯定是从xxx-到xxx ,那么如何散列是否跟开辟空间以及空间分配区域有关呢?

image.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值