1.判断table数组是否为空,如果是空的,那就初始化长度为16的数组
2.如果不是空的,那就根据key计算hash值得到数组索引
3.如果索引对应的哈希桶等于null,那么直接新建节点添加
4.如果哈希桶不是null,那么
4.1 判断桶里元素的key是不是和要插入的key是一样的,如果是一样的,那么就直接覆盖value
4.2如果不一样,那么判断桶里的元素是不是红黑树的根节点,如果是,那就直接在树中插入键 值对
4.3如果判断桶里的元素是链表的头节点,那么遍历链表,在链表尾部插入数据,然后判断链表长度是否大于8,大于8就将链表转成红黑树。遍历过程中如果发现key已经存在,就将对应的value覆盖掉。
5.插入成功后,判断数组存在的元素是否超过了数组长度*加载因子,如果超过,就进行扩容