Java集合:HashMap怎么做到key 不能重复的?(用哈希code)
HashMap 的 key 不重复性主要是通过两步来实现的:
- 通过 hashCode 确定存储位置:
- 当你使用 put 方法添加一个 key-value 对时,
- HashMap 会先调用 key 的 hashCode() 方法计算出一个哈希值,
- 并根据这个值确定该 key 应该存放在哪个桶中。
- 通过 equals 方法比较键值:
- 即便不同的对象可能有相同的哈希值(称为哈希碰撞),
- HashMap 会在相应桶内遍历已有的 key,并调用它们的 equals() 方法来判断两个 key 是否相等。
- 如果发现某个 key 与新插入的 key 在 equals 判断下相等,就认为这是同一个 key,并用新值替换原有值,从而确保 key 的唯一性。