zoukankan      html  css  js  c++  java
  • Java | JDK8下的ConcurrentHashMap#get

     1  public V get(Object key) {
     2         Node<K,V>[] tab; Node<K,V> e, p; int n, eh; K ek;
     3          //寻址
     4         int h = spread(key.hashCode());
     5         if ((tab = table) != null && (n = tab.length) > 0 &&
     6             (e = tabAt(tab, (n - 1) & h)) != null) {
     7             //当头节点的hash值与key的hash值相同时,判断key的内容知否相同
     8             if ((eh = e.hash) == h) {
     9                 if ((ek = e.key) == key || (ek != null && key.equals(ek)))
    10                     return e.val;
    11             }
    12             //如果头节点的hash值eh<0 红黑树存储 直接寻找
    13             else if (eh < 0)
    14                 return (p = e.find(h, key)) != null ? p.val : null;
    15             //链表查找
    16             while ((e = e.next) != null) {
    17                 if (e.hash == h &&
    18                     ((ek = e.key) == key || (ek != null && key.equals(ek))))
    19                     return e.val;
    20             }
    21         }
    22         return null;
    23     }
  • 相关阅读:
    AWVS——windows下扫描(上)
    中介者模式
    设计模式-类型2
    设计模式=类型
    C++ 1
    字符占字节
    编程规范
    位运算相关规律
    十进制转二进制
    递归理解
  • 原文地址:https://www.cnblogs.com/jj81/p/11480056.html
Copyright © 2011-2022 走看看