equal
deleted
inserted
replaced
622 * @return previous value, or null if none |
622 * @return previous value, or null if none |
623 */ |
623 */ |
624 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, |
624 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, |
625 boolean evict) { |
625 boolean evict) { |
626 Node<K,V>[] tab; Node<K,V> p; int n, i; |
626 Node<K,V>[] tab; Node<K,V> p; int n, i; |
627 if (size > threshold || (tab = table) == null || |
627 if ((tab = table) == null || (n = tab.length) == 0) |
628 (n = tab.length) == 0) |
|
629 n = (tab = resize()).length; |
628 n = (tab = resize()).length; |
630 if ((p = tab[i = (n - 1) & hash]) == null) |
629 if ((p = tab[i = (n - 1) & hash]) == null) |
631 tab[i] = newNode(hash, key, value, null); |
630 tab[i] = newNode(hash, key, value, null); |
632 else { |
631 else { |
633 Node<K,V> e; K k; |
632 Node<K,V> e; K k; |
657 afterNodeAccess(e); |
656 afterNodeAccess(e); |
658 return oldValue; |
657 return oldValue; |
659 } |
658 } |
660 } |
659 } |
661 ++modCount; |
660 ++modCount; |
662 ++size; |
661 if (++size > threshold) |
|
662 resize(); |
663 afterNodeInsertion(evict); |
663 afterNodeInsertion(evict); |
664 return null; |
664 return null; |
665 } |
665 } |
666 |
666 |
667 /** |
667 /** |