hashMap 中map.put(A,1);map.put(B,2);map.put(C,3);然后执行map.get(B);请描述一下 HashMap 获取元素的大致过程。HashMap 实际过程第一步计算 hashhashhash(key)第二步计算桶下标假设容量为16index(n-1)hash例如15hash得到桶的位置。第三步找到桶table[index]此时有三种情况情况1桶为空returnnull;直接结束。情况2桶第一个节点就是目标先比较hash是否相同equals是否相同满足直接返回。HashMap 不会一上来就遍历链表。先看头节点是不是。情况3发生哈希冲突开始向后查找。JDK8链表遍历红黑树查找追问为什么既要比较 hash又要比较 equals例如Aa.hashCode()BB.hashCode()它们的 hashCode 相同。如果只比较 hashAaBB显然错误。所以hash相同equals相同才能认为是同一个 key。