1.根据key通过哈希算法与与运算得出数组下标
    2.如果数组下标位置不存在,将key-value封装成Entry对象(1.7中是Entry对象,1.8中是Node对象 都是key-value结构的数组)并放入该位置
    3.如果该位置不为空:
    Jdk1.7:先判断是否需要扩容,需要则进行扩容,不需要则通过key的equse判断值是否相等,相等则更新,不相等则使用头插法插入链表的该位置
    Jdk1.8:先判断该位置的Node类型,是Node链表还是红黑树

    1. 1. 如果是红黑树,则将key-value封装成一个红黑树节点添加到树中去,在这个过程中还会判断红黑树中是否存在该key,存在则更新
    2. 1. 如果当前是Node链表,则将key-value封装成一个链表Node并通过尾插法插入到链表的最后一个Node,因为是尾插法,所以需要遍历链表,遍历过程中会判断是否存在当前key,存在则更新value,不存在的话在遍历完成后,将新的链表Node插入到链表中,插入完成后会判断当前链表的个数,如果大于等于8,那么会将链表转为红黑树
    3. 1. ket-value封装为Node插入到链表或红黑树后,再判断是否需要扩容,如果需要则根据扩容算法进行扩容