HashMap简介

1.概念
HashMap又叫哈希表、散列表,是一种以键值对方式存储数据的数据结构,它利用不重复、无序的键实现了快速查找。
2.哈希模型
l 有若干哈希桶,每个桶有一个哈希值
l 放入的数据,先获得数据的哈希值,放入对应的哈希桶
l 相同哈希值的数据,会被放入同一个哈希桶
3.内部算法
HashMap采用数组存放数据,数组的初始长度为16。其数据存放顺序如下:
(1)计算键的哈希值,并使用此哈希值计算一个下标值index;
(2)将键值封装成一个Entry对象。
(3)将对象放入index位置
3.1 为空,直接放入
3.2 有数据,依次用equals()比较键是否相等
l 找到相等的,覆盖值
l 没有相等的,链表连在一起
3.3 负载率、加载因子到0.75(负载率太大则出现冲突的机会增大,负载率太小则空间利用率不高)
l 新建容量翻倍的新数组
l 所有数据,重新哈希,放入新数组
3.4 jdk1.8
l 链表长度到8,转成红黑树
l 红黑树数据数量减少到6,转回成链表
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值