Java集合:hashcode重复了怎么办呢?
当 hashCode 重复时,也就是发生哈希碰撞,HashSet(实际上是基于 HashMap 实现的)会采取以下措施来处理:
- 同一桶中存储多个对象: 当多个对象计算出相同的 hashCode 后,它们会被存放到同一个桶中。
- 使用 equals() 方法区分: 在同一桶中,添加新元素时,会依次使用 equals() 方法和桶内已有的元素进行比较。
- 如果返回 true,则认为是重复元素,不会插入;
- 如果都不相等,则将新元素加入该桶。
- 链表转树(Java 8 及以后): 如果同一桶中的元素过多(达到一定阈值,例如 8 个),链表会转换成红黑树,以提升查找效率。

浙公网安备 33010602011771号