码迷,mamicode.com
首页 > 编程语言 > 详细

Java | JDK8下的ConcurrentHashMap#get

时间:2019-09-07 13:21:10      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:红黑树   obj   hash   read   寻址   shc   next   style   ||   

 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

标签:红黑树   obj   hash   read   寻址   shc   next   style   ||   

原文地址:https://www.cnblogs.com/jj81/p/11480056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!