HashSet 和 TreeSet 的区别?

发布于

一、底层实现

  • HashSet:内部是 HashMap,元素作为 HashMap 的 key,value 是固定 Object。
  • TreeSet:内部是 TreeMap,基于红黑树。

二、对比

维度 HashSet TreeSet
有序性 无序 自然排序或定制排序
元素要求 重写 equals/hashCode 实现 Comparable 或传入 Comparator
时间复杂度 O(1) O(log n)
null 元素 允许一个 不允许(除非 Comparator 支持)

三、使用场景

  • 只需去重、不关心顺序 → HashSet。
  • 需要排序输出 → TreeSet。
  • 保持插入顺序 → LinkedHashSet。