HashMap

发布时间 2023-07-18 16:28:15作者: 时间羚羊

基本数据结构

数组、链表和红黑树,链表长度大于等于8转化红黑树,链表长度小于等于6退化成链表,中间隔一个7是为了防止数据结构频繁转化,扩容因子0.75

初始化方法

 

put方法

第一步封装Node节点,key和value都在里面

否则 直接hash运算得到数组下标,把值放进去

如果 达到扩容的阈值,先扩容出一个新数组,旧的值进行rehash放进新数组,新值hash放进去

如果hash碰撞,放入Node的下一个节点

 

为什么线程不安全

常规博客说法扩容是不安全的,我认为hash碰撞后,链表的延长(可能会直接变成树结构)也是不安全的,但是概率太低