流程
- 首先根据 hash 方法获取到 key 的 hash 值
- 然后通过 hash & (length - 1) 的方式获取到 key 所对应的Node数组下标 ( length对应数组长度 )
- 首先判断此结点是否为空,是否就是要找的值,是则返回空,否则进入第二个结点。
- 接着判断第二个结点是否为空,是则返回空,不是则判断此时数据结构是链表还是红黑树
- 链表结构进行顺序遍历查找操作,每次用 == 符号 和 equals( ) 方法来判断 key 是否相同,满足条件则直接返回该结点。链表遍历完都没有找到则返回空。
- 红黑树结构执行相应的 getTreeNode( ) 查找操作。
源码分析
public V get(Object key) {
Node<K,V> e;
return (e = getNode(hash(key), key)) == null ? null : e.value;
}
final Node<K,V>