HashMap怎么查找元素的呢?

HashMap怎么查找元素的呢?
HashMap的查找就简单很多:
- 使用扰动函数,获取新的哈希值:
int hash = (key == null) ? 0 : (key.hashCode()) ^ (key.hashCode() >>> 16);
计算数组下标,获取节点:
Node<K, V> node = table[(table.length - 1) & hash];
如果当前节点的key与目标key匹配,直接返回节点的值:
if (node != null && (node.key == key || (key != null && key.equals(node.key)))) return node.value;
如果当前节点是树节点,则在红黑树中进行查找:
if (node instanceof TreeNode) return ((TreeNode<K, V>) node).getTreeNode(hash, key);
如果当前节点是链表节点,则在链表中进行遍历查找:
while (node != null) { if (node.key == key || (key != null && key.equals(node.key))) return node.value; node = node.next; }