1.Map
的存储特点
在
Map
这个结构中,数据是以键值对(key-value)的形式进行存储的,每一个存储进
map
的数据都是一一对应的。
创建一个
Map
结构可以使用
new HashMap()
以及
new TreeMap()
两种方式,两者之间的区别是:
TreeMap
是支持 排序的。
2.HashMap
的底层存储方式
![](https://i-blog.csdnimg.cn/blog_migrate/ad10675a0c5fdfa8c4e28709ecc0b7ec.png)
总结
:
1.
用
hashMap
存储数据
(key,value)
的时候使用
put
方法
2. put
方法会调用
putVal
方法
,
把
hash(hey)
和当前的
key
,
value
作为参数传进来
3.
判断数组是否为空,即判断是否是第一次添加数据
,
如果是的话,会先调用
resize
方法扩容
4.
之后
,
根据当前
key
的
hash
值找到它在数组中的下标
(
怎么算的
? index = (n - 1) & hash)
,判断当前下标位置是 否已经存在元素
5.
如果不存在,直接把
key
、
value
包装成
Node
节点作为链表头存入数组
6.
如果存在,分为三种情况
1.
)比较一下已有数据和存入数据 如果
hash
值等于传过来的
hash
,并且他们的
key
值也相等 最后会把 value的值覆盖处理
2.
)上一步不相等,就判断一下当前是不是红黑树结构,是则调用
putTreeVal()
把它加入到红黑树
3.
)既不相等,也不是红黑树结构,说明是普通链表结构,遍历这个链表,将数据存到链表尾部
1.