< prev index next >

src/java.base/share/classes/java/util/HashMap.java

Print this page
*** 574,18 ***
      final Node<K,V> getNode(Object key) {
          Node<K,V>[] tab; Node<K,V> first, e; int n, hash; K k;
          if ((tab = table) != null && (n = tab.length) > 0 &&
              (first = tab[(n - 1) & (hash = hash(key))]) != null) {
              if (first.hash == hash && // always check first node
!                 ((k = first.key) == key || (key != null && key.equals(k))))
                  return first;
              if ((e = first.next) != null) {
                  if (first instanceof TreeNode)
                      return ((TreeNode<K,V>)first).getTreeNode(hash, key);
                  do {
                      if (e.hash == hash &&
!                         ((k = e.key) == key || (key != null && key.equals(k))))
                          return e;
                  } while ((e = e.next) != null);
              }
          }
          return null;
--- 574,18 ---
      final Node<K,V> getNode(Object key) {
          Node<K,V>[] tab; Node<K,V> first, e; int n, hash; K k;
          if ((tab = table) != null && (n = tab.length) > 0 &&
              (first = tab[(n - 1) & (hash = hash(key))]) != null) {
              if (first.hash == hash && // always check first node
!                     Objects.equals(key, first.key))
                  return first;
              if ((e = first.next) != null) {
                  if (first instanceof TreeNode)
                      return ((TreeNode<K,V>)first).getTreeNode(hash, key);
                  do {
                      if (e.hash == hash &&
!                             Objects.equals(key, e.key))
                          return e;
                  } while ((e = e.next) != null);
              }
          }
          return null;

*** 637,11 ***
          if ((p = tab[i = (n - 1) & hash]) == null)
              tab[i] = newNode(hash, key, value, null);
          else {
              Node<K,V> e; K k;
              if (p.hash == hash &&
!                 ((k = p.key) == key || (key != null && key.equals(k))))
                  e = p;
              else if (p instanceof TreeNode)
                  e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);
              else {
                  for (int binCount = 0; ; ++binCount) {
--- 637,11 ---
          if ((p = tab[i = (n - 1) & hash]) == null)
              tab[i] = newNode(hash, key, value, null);
          else {
              Node<K,V> e; K k;
              if (p.hash == hash &&
!                     Objects.equals(key, p.key))
                  e = p;
              else if (p instanceof TreeNode)
                  e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);
              else {
                  for (int binCount = 0; ; ++binCount) {

*** 650,11 ***
                          if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st
                              treeifyBin(tab, hash);
                          break;
                      }
                      if (e.hash == hash &&
!                         ((k = e.key) == key || (key != null && key.equals(k))))
                          break;
                      p = e;
                  }
              }
              if (e != null) { // existing mapping for key
--- 650,11 ---
                          if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st
                              treeifyBin(tab, hash);
                          break;
                      }
                      if (e.hash == hash &&
!                             Objects.equals(key, e.key))
                          break;
                      p = e;
                  }
              }
              if (e != null) { // existing mapping for key

*** 822,20 ***
          Node<K,V>[] tab; Node<K,V> p; int n, index;
          if ((tab = table) != null && (n = tab.length) > 0 &&
              (p = tab[index = (n - 1) & hash]) != null) {
              Node<K,V> node = null, e; K k; V v;
              if (p.hash == hash &&
!                 ((k = p.key) == key || (key != null && key.equals(k))))
                  node = p;
              else if ((e = p.next) != null) {
                  if (p instanceof TreeNode)
                      node = ((TreeNode<K,V>)p).getTreeNode(hash, key);
                  else {
                      do {
                          if (e.hash == hash &&
!                             ((k = e.key) == key ||
-                              (key != null && key.equals(k)))) {
                              node = e;
                              break;
                          }
                          p = e;
                      } while ((e = e.next) != null);
--- 822,19 ---
          Node<K,V>[] tab; Node<K,V> p; int n, index;
          if ((tab = table) != null && (n = tab.length) > 0 &&
              (p = tab[index = (n - 1) & hash]) != null) {
              Node<K,V> node = null, e; K k; V v;
              if (p.hash == hash &&
!                     Objects.equals(key, p.key))
                  node = p;
              else if ((e = p.next) != null) {
                  if (p instanceof TreeNode)
                      node = ((TreeNode<K,V>)p).getTreeNode(hash, key);
                  else {
                      do {
                          if (e.hash == hash &&
!                                 Objects.equals(key, e.key)) {
                              node = e;
                              break;
                          }
                          p = e;
                      } while ((e = e.next) != null);

*** 1210,11 ***
                  old = (t = (TreeNode<K,V>)first).getTreeNode(hash, key);
              else {
                  Node<K,V> e = first; K k;
                  do {
                      if (e.hash == hash &&
!                         ((k = e.key) == key || (key != null && key.equals(k)))) {
                          old = e;
                          break;
                      }
                      ++binCount;
                  } while ((e = e.next) != null);
--- 1209,11 ---
                  old = (t = (TreeNode<K,V>)first).getTreeNode(hash, key);
              else {
                  Node<K,V> e = first; K k;
                  do {
                      if (e.hash == hash &&
!                             Objects.equals(key, e.key)) {
                          old = e;
                          break;
                      }
                      ++binCount;
                  } while ((e = e.next) != null);

*** 1310,11 ***
                  old = (t = (TreeNode<K,V>)first).getTreeNode(hash, key);
              else {
                  Node<K,V> e = first; K k;
                  do {
                      if (e.hash == hash &&
!                         ((k = e.key) == key || (key != null && key.equals(k)))) {
                          old = e;
                          break;
                      }
                      ++binCount;
                  } while ((e = e.next) != null);
--- 1309,11 ---
                  old = (t = (TreeNode<K,V>)first).getTreeNode(hash, key);
              else {
                  Node<K,V> e = first; K k;
                  do {
                      if (e.hash == hash &&
!                             Objects.equals(key, e.key)) {
                          old = e;
                          break;
                      }
                      ++binCount;
                  } while ((e = e.next) != null);

*** 1375,11 ***
                  old = (t = (TreeNode<K,V>)first).getTreeNode(hash, key);
              else {
                  Node<K,V> e = first; K k;
                  do {
                      if (e.hash == hash &&
!                         ((k = e.key) == key || (key != null && key.equals(k)))) {
                          old = e;
                          break;
                      }
                      ++binCount;
                  } while ((e = e.next) != null);
--- 1374,11 ---
                  old = (t = (TreeNode<K,V>)first).getTreeNode(hash, key);
              else {
                  Node<K,V> e = first; K k;
                  do {
                      if (e.hash == hash &&
!                             Objects.equals(key, e.key)) {
                          old = e;
                          break;
                      }
                      ++binCount;
                  } while ((e = e.next) != null);

*** 2022,11 ***
                  TreeNode<K,V> pl = p.left, pr = p.right, q;
                  if ((ph = p.hash) > h)
                      p = pl;
                  else if (ph < h)
                      p = pr;
!                 else if ((pk = p.key) == k || (k != null && k.equals(pk)))
                      return p;
                  else if (pl == null)
                      p = pr;
                  else if (pr == null)
                      p = pl;
--- 2021,11 ---
                  TreeNode<K,V> pl = p.left, pr = p.right, q;
                  if ((ph = p.hash) > h)
                      p = pl;
                  else if (ph < h)
                      p = pr;
!                 else if (Objects.equals(k, (pk = p.key)))
                      return p;
                  else if (pl == null)
                      p = pr;
                  else if (pr == null)
                      p = pl;

*** 2140,11 ***
                  int dir, ph; K pk;
                  if ((ph = p.hash) > h)
                      dir = -1;
                  else if (ph < h)
                      dir = 1;
!                 else if ((pk = p.key) == k || (k != null && k.equals(pk)))
                      return p;
                  else if ((kc == null &&
                            (kc = comparableClassFor(k)) == null) ||
                           (dir = compareComparables(kc, k, pk)) == 0) {
                      if (!searched) {
--- 2139,11 ---
                  int dir, ph; K pk;
                  if ((ph = p.hash) > h)
                      dir = -1;
                  else if (ph < h)
                      dir = 1;
!                 else if (Objects.equals(k, (pk = p.key)))
                      return p;
                  else if ((kc == null &&
                            (kc = comparableClassFor(k)) == null) ||
                           (dir = compareComparables(kc, k, pk)) == 0) {
                      if (!searched) {
< prev index next >