温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Set有哪些常用实现

发布时间:2026-10-05 04:16:27 来源:亿速云 阅读:95 作者:小樊 栏目:编程语言

在 Java 中,Set 是 Collection 的子接口,用于存储不重复的元素。以下是常用的 Set 实现类及其特点:


1. HashSet(最常用)

  • 底层结构:哈希表(HashMap)
  • 特点:
    • 元素无序
    • 允许 null 元素
    • 查询、插入、删除效率高(O(1))
  • 线程安全:否
  • 适用场景:不关心顺序、追求性能
Set<String> set = new HashSet<>();

2. LinkedHashSet

  • 底层结构:哈希表 + 双向链表
  • 特点:
    • 保持插入顺序
    • 性能略低于 HashSet
  • 线程安全:否
  • 适用场景:需要保持插入顺序
Set<String> set = new LinkedHashSet<>();

3. TreeSet

  • 底层结构:红黑树(NavigableMap)
  • 特点:
    • 元素有序(自然排序或定制排序)
    • 不允许 null
    • 插入、删除、查询为 O(log n)
  • 线程安全:否
  • 适用场景:需要排序的集合
Set<Integer> set = new TreeSet<>();

4. EnumSet

  • 底层结构:位向量
  • 特点:
    • 只能存枚举类型
    • 性能极高
  • 线程安全:否
  • 适用场景:枚举值集合
Set<Day> set = EnumSet.of(Day.MONDAY, Day.TUESDAY);

5. 并发相关实现(java.util.concurrent)

CopyOnWriteArraySet

  • 基于 CopyOnWriteArrayList
  • 读多写少场景
  • 线程安全

ConcurrentHashMap.newKeySet()

  • 基于 ConcurrentHashMap
  • 高并发场景

对比总结

实现类 是否有序 是否线程安全 底层结构
HashSet 否 否 哈希表
LinkedHashSet 插入顺序 否 哈希表+链表
TreeSet 排序 否 红黑树
EnumSet 枚举顺序 否 位向量
CopyOnWriteArraySet 插入顺序 是 数组

如果你有具体使用场景(如并发、排序、去重),我可以帮你推荐合适的 Set。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手