第四步:将当前对应的 hash,key,value封装成一个 Entry,去数组中查找当前位置有没有元素,如果没有,放在这个位置上;如果此位置上已经存在链表,那么遍历链表,如果链表上某个节点的 key 与当前key 进行 equals 比较后结果为 true,则把原来节点上的value 返回,将当前新的 value替换掉原来的value,如果遍历完链表,没有找到key 与当前 key equals为 true的,就把刚才封装的新的 Entry中next 指向当前链表的始节点,也就是说当前节点现在在链表的第一个位置,简单来说即,先来的往后退。
如果hashMap添加元素,如果该位置有元素,比较当前元素的hash值和要添加元素的hash如果相等,并且当前元素与要添加元素的equals()返回为true,则替换值;如果不同,进行遍历子节点比较,如果没有找到,是添加到该Node节点的最后一个元素,也就是末尾。