一文读懂HashMap和HashTable的区别以及常见面试题(11)

\n

JDK1.8的hashmap:put方法

\n

final V putVal(int hash K key V value boolean onlyIfAbsent                   boolean evict) {
       Node<KV>[
tab; Node<KV> p; int n i;        if ((tab = table) == null || (n = tab.length) == 0)
           n = (tab = resize()).length;        if ((p = tab[i = (n - 1) & hash
) == null)
           tab[i
= newNode(hash key value null);        else {
           Node<KV> e; K k;            if (p.hash == hash &&
               ((k = p.key) == key || (key != null && key.equals(k))))
               e = p;                //如果p是红黑树节点 , 则用另外的处理方法

推荐阅读