Java | JDK8下的ConcurrentHashMap#get

Posted jj81

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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     

 

以上是关于Java | JDK8下的ConcurrentHashMap#get的主要内容,如果未能解决你的问题,请参考以下文章

Java ArrayList底层实现原理源码详细分析Jdk8

JDK8下的HashMap有什么特别之处?

Linux安装jdk8及环境变量配置

Linux安装jdk8及环境变量配置

jdk8与jdk9的共存

java开发-问题清单