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。