Set 有什么特点,有哪些实现

Set 不允许元素重复且无序,常用实现有 HashSet、LinkedHashSet 和 TreeSet。

HashSet
  • HashSet 通过 HashMap 实现,HashMap 的 Key 即 HashSet 存储的元素,所有 Key 都使用相同的 Value ,一个名为 PRESENT 的 Object 类型常量。使用 Key 保证元素唯一性,但不保证有序性。由于 HashSet 是 HashMap 实现的,因此线程不安全。
  • HashSet 允许有 null 值。
  • HashSet 判断元素是否相同时,对于包装类型直接按值比较。对于引用类型先比较 hashCode 是否相同,不同则代表不是同一个对象,相同则继续比较 equals,都相同才是同一个对象。
LinkedHashSet
  • LinkedHashSet 继承自 HashSet,通过 LinkedHashMap 实现,使用双向链表维护元素插入顺序。
  • 有序、不允许重复
  • 由于需要额外维护链表,性能可能略低于HashSet
  • 该类提供了所有可选的Set操作,并允许null元素
  • 请注意,此实现不同步
  • 在HshSet底层存储结构的基础上,额外提供了一对指针记录Node元素的上一个元素和下一个元素,可以按照元素添加的顺序实现遍历
  • 对于频繁的遍历,效率高于HashSet
TreeSet
  • TreeSet 通过 TreeMap 实现的,添加元素到集合时按照比较规则将其插入合适的位置,保证插入后的集合仍然有序。
  • 无法添加null值
posted @   张三丰学Java  阅读(127)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示