HashMap的put方法的具体流程

13 阅读1分钟

1.判断table数组是否为空,如果是空的,那就初始化长度为16的数组

2.如果不是空的,那就根据key计算hash值得到数组索引

3.如果索引对应的哈希桶等于null,那么直接新建节点添加

4.如果哈希桶不是null,那么

4.1 判断桶里元素的key是不是和要插入的key是一样的,如果是一样的,那么就直接覆盖value

4.2如果不一样,那么判断桶里的元素是不是红黑树的根节点,如果是,那就直接在树中插入键       值对

4.3如果判断桶里的元素是链表的头节点,那么遍历链表,在链表尾部插入数据,然后判断链表长度是否大于8,大于8就将链表转成红黑树。遍历过程中如果发现key已经存在,就将对应的value覆盖掉。

5.插入成功后,判断数组存在的元素是否超过了数组长度*加载因子,如果超过,就进行扩容