如果键的哈希值已经在数组中存在,调用equals判断是否相同,相同则覆盖。

Author: xiong145Created Feb 4, 2026Updated Feb 4, 2026

[能说一下 HashMap 的底层数据结构吗?

不过,链表过长时,查询效率会比较低,于是当链表的长度超过 8 时(且数组的长度大于 64),链表就会转换为红黑树。红黑树的查询效率是 O(logn),比链表的 O(n) 要快。

hash() 方法的目标是尽量减少哈希冲突,保证元素能够均匀地分布在数组的每个位置上。

static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); } 如果键的哈希值已经在数组中存在,其对应的值将被新值覆盖。

Source: itwanger/toBeBetterJavaer