温馨提示×

温馨提示×

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

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

Java Set集合是什么

发布时间:2026-07-24 11:43:20 来源:亿速云 阅读:114 作者:小樊 栏目:编程语言

在 Java 中,Set 是一种不包含重复元素的集合,属于 java.util 包,是 Collection 接口的子接口。


一、Set 的核心特点

  1. 不允许重复元素
    • 如果尝试添加已存在的元素,添加会失败(返回 false)。
  2. 无序(大多数实现)
    • 不保证元素的存储顺序(如 HashSet)。
    • 但有些实现是有序的(如 TreeSet、LinkedHashSet)。
  3. 通常最多包含一个 null
    • HashSet、LinkedHashSet 允许一个 null
    • TreeSet 不允许 null(否则会抛异常)

二、Set 的常用实现类

1️⃣ HashSet(最常用)

Set<String> set = new HashSet<>();

特点:

  • 基于 哈希表(HashMap)
  • 查询、插入、删除速度快(O(1))
  • 无序
  • 允许一个 null

示例:

Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("A"); // 不会添加成功

System.out.println(set); // [A, B]

2️⃣ LinkedHashSet

Set<String> set = new LinkedHashSet<>();

特点:

  • 继承 HashSet
  • 保持插入顺序
  • 性能略低于 HashSet

示例:

Set<String> set = new LinkedHashSet<>();
set.add("B");
set.add("A");
set.add("C");

System.out.println(set); // [B, A, C]

3️⃣ TreeSet

Set<String> set = new TreeSet<>();

特点:

  • 基于 红黑树
  • 自动排序
  • 不允许 null
  • 插入、查询时间复杂度 O(log n)

示例:

Set<Integer> set = new TreeSet<>();
set.add(3);
set.add(1);
set.add(2);

System.out.println(set); // [1, 2, 3]

三、Set 常用方法

Set<String> set = new HashSet<>();

set.add("A");        // 添加
set.remove("A");     // 删除
set.contains("A");   // 是否包含
set.size();          // 元素个数
set.isEmpty();       // 是否为空
set.clear();         // 清空

四、Set 和 List 的区别

对比项 Set List
是否允许重复 ❌ 不允许 ✅ 允许
是否有序 不一定 ✅ 有序
是否可索引 ❌ ✅
常用实现 HashSet、TreeSet ArrayList、LinkedList

五、Set 的典型使用场景

✅ 去重
✅ 判断是否存在(contains)
✅ 集合运算(交集、并集、差集)

去重示例:

List<String> list = List.of("a", "b", "a");
Set<String> set = new HashSet<>(list);

System.out.println(set); // [a, b]

六、Set 的底层原理(简单理解)

  • HashSet
    • 使用 HashMap
    • 元素作为 key,value 是一个固定对象
  • TreeSet
    • 使用 TreeMap
    • 按自然顺序或自定义比较器排序

如果你愿意,我也可以:

  • 用 图 给你讲 Set 的存储结构
  • 对比 Set 和 Map 的关系
  • 讲 面试常考的 Set 问题
向AI问一下细节

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

AI
助
手