equals()方法由程序员自己决定那条件符合时,两对象相同,并不是单一的比较内容
final V putVal(int hash, K key, V value, boolean onlyIfAbsent,boolean evict) {
Node<K,V>[] tab; Node<K,V> p; int n, i; 定义了辅助变量
table 就是HashMap 的一个属性 是一个Node[]类型
if 语句表示如果当前的table是null,或者大小为0,就进行第一次扩容到16空间
if ((tab = table) == null || (n = tab.length) == 0)
n = (tab = resize()).length;
(1)根据传入的key,得到hash值 去计算该key应该存放到table表中的哪一个索引位置并把这个位置的对象赋给p
(2)判断P是否为空
(2.1)如果p为null,表示还没有存放元素,就创建一个Node对象
(2.2) 就放在该位置上,同时将hash值也进行保存,方便后续的比较 newNode(hash, key,value, null);
if ((p = tab[i = (n - 1) & hash]) == null)
tab[i] = newNode(hash, key, value, null);
else {