你真的了解HashMap吗?

在这里插入图片描述

如图,是所有要讲解的内容,当你掌握图中思维导图,你对HashMap掌握的也就差不多了,今天先讲解前面三个部分。

1.什么是Hash?Hash表?Hashcode?

  1. Hash,一般称作散列或者哈希,是把任意长度的输入通过散列算法变成固定长度的输出。

  2. ​Hash表,一般叫散列表或者哈希表,是根据关键码值(Key,Value)而直接进行访问的数据结构。也就是说,他通过关键码值映射到表中一个位置来访问记录,已加快查找的速度。‘

  3. ​HashCode,一般叫做哈希码,并不是完全唯一的,对象相同,哈希码一定相同,但是哈希码相同,对象不一定相同。

​2.HashMap的数据结构?

  1. ​jdk1.7以及之前:数组加链表
  2. ​jdk1.8以及之后:数组加(链表或者红黑树)

3.HashMap容量?

HashMap默认容量大小为16,上限是2的30次方,当你指定容量大小的时候,如果超过最大值,会默认赋值最大值,否则会取大于等于你当前值最小的2的次方值。

​提问:为什么HashMap内部大小要设置2的次方?

  1. &运算速度速度比%快
  2. 能保证索引值在HashMap容量范围内
  3. (size - 1)& hash值是分布均匀的,可以减少hash碰撞




知是行之始,行是知之成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值