HashMap小结

1.Hash的理解

把任意长度的输入通过hash算法映射为固定长度的输出,输出的内容就是hash值

2.Hash的特点

  • 无法倒推出原值
  • 原值细微的变化也会导致结果不同,相同的原值计算后的hash值相同
  • 效率高,长文本也能快速计算出hash值
  • 冲突概率要小(因为hash的原理是将原值大空间转换为小空间输出,所以必定会导致抽屉原理:10个苹果放到9个抽屉里,必定有个抽屉会放入至少两个苹果)

3.HashMap的结构

JDK1.8以后,HashMap采用的是数组+链表+红黑树的结构,每个数据单元都是一个node结构,node结构中有key、value、next、hash这四个字段。
next字段是发生hash冲突时,当前桶位中的node与冲突的node形成链表需要用到的字段
hash这个字段的值不是key的hashcode()方法返回值,是经过返回值二次加工得到的(haskcodeg高16位^低16位)

4.HashMap的初始数据

hashmap如果没有指定初始值,散列表的长度默认为16

5.HashMap的创建时机

散列表属于懒加载机制,只有在第一次put数据的时候才加载

6.负载因子

HashMap默认的负载因子为0.75,负载因子用来计算表的扩容阈值,比如说默认的长度为16时 扩容阈值就是:16*0.75=

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值