Java集合:hashcode重复了怎么办呢?

当 hashCode 重复时,也就是发生哈希碰撞,HashSet(实际上是基于 HashMap 实现的)会采取以下措施来处理:

  • 同一桶中存储多个对象: 当多个对象计算出相同的 hashCode 后,它们会被存放到同一个桶中。
  • 使用 equals() 方法区分: 在同一桶中,添加新元素时,会依次使用 equals() 方法和桶内已有的元素进行比较。
    • 如果返回 true,则认为是重复元素,不会插入
    • 如果都不相等,则将新元素加入该桶。
  • 链表转树(Java 8 及以后): 如果同一桶中的元素过多(达到一定阈值,例如 8 个),链表会转换成红黑树,以提升查找效率。
posted @ 2025-04-03 12:19  kuki'  阅读(40)  评论(0)    收藏  举报