JDK1.8中HashMap的源码分析( 三 )

获取元素 put()方法
public V get(Object key) {Node e;//也是调用getNode方法来完成的return (e = getNode(hash(key), key)) == null ? null : e.value;}final Node getNode(int hash, Object key) {//first 头结点 , e 临时变量 , n 长度,k keyNode[] tab; Node first, e; int n; K k;//头结点也就是数组下标的节点if ((tab = table) != null//不是头结点if ((e = first.next) != null) {//判断是否是红黑树结构if (first instanceof TreeNode)//去红黑树中找 , 然后返回return ((TreeNode)first).getTreeNode(hash, key);do { //链表节点 , 一样遍历链表 , 找到该节点并返回if (e.hash == hash} while ((e = e.next) != null);}}//找不到 , 表示不存在该节点return null;}