1.如果HashMap未被初始化,则初始化
2.对key求Hash值(使用位未运算,效率高),然后再计算下标(使用取模运算%)
3.如果没有碰撞,直接放入桶中(数组中)
4.如果碰撞了,以链表的方式链接到后面
5.如果链表长度超过了阀值8,就把链表转成红黑树
6.如果链表长度低于6,就把红黑树转回链表
7.如果节点已经存在就替换旧值(因key是用set进行存储的)
8.如果桶满了(容量16*加载因子0.75),就需要resize(扩容2倍后重排)多线程环境下,调整大小会存在条件竞争,容易造成死锁,rehashing是一个耗时的过程