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,转回成链表
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42695926/article/details/83003374
今日推荐