HashMap
HashMap是基于Hashing原理。由数组,链表,红黑树组成。
我们通过put()和get()方法储存和获取对象。当我们给put()方法传递键和值时候,我们先对键调用hashcode()方法,计算并返回的hashcode适用于找到Map数组的bucket位置来存储对象。HashMap是根据HashCode来进行计算Hash值的。
Put()过程:1.对Key求Hash值,计算下标;
2.如果没有碰撞,就放入bucket中
3.如果发生了碰撞,就是用链的结构放在后边
4.如果链表大于阀值,就转为红黑树
5.如果节点已经存在就替换旧节点
6.如果bucket满了,就要进行扩容。
Get()过程:
通过键值对来进行访问的数据结构。
为什么使用HashMap?
超级快速的查询速度,可以达到0(1)的时间复杂度。
动态的可变长存储数据。(和数组对比而言)