Java Set 中的常用方法示例总结
作者:Geoking.
Set是Java集合框架(Collection Framework)中最常用的接口之一,具有元素唯一、不允许重复 的特性,这篇文章将全面总结Java Set的常用方法并通过示例进行讲解,主要用于日常查询使用,感兴趣的朋友跟随小编一起看看吧
一、前言
Set 是 Java 集合框架(Collection Framework)中最常用的接口之一,具有 元素唯一、不允许重复 的特性。
无论你用 HashSet、LinkedHashSet、TreeSet,它们都实现了 Set 接口,因此拥有大量共同的方法。
这篇文章将全面总结 Java Set 的常用方法并通过示例进行讲解,主要用于日常查询使用。
二、Set 的核心特点回顾
- 不允许重复元素
- 无序(LinkedHashSet 有序,TreeSet 有序但基于排序)
- 无索引,不支持下标访问
- 判断重复依赖:
hashCode() + equals()(TreeSet 使用 compareTo/Comparator)
三、Set 常用方法总览
以下方法来自 Set 的父接口 Collection,因此所有 Set 实现类都具备这些操作:
| 方法 | 返回值 | 说明 |
|---|---|---|
add(E e) | boolean | 添加元素 |
remove(Object o) | boolean | 删除指定元素 |
contains(Object o) | boolean | 判断是否存在 |
size() | int | 获取元素数量 |
isEmpty() | boolean | 判断是否为空 |
clear() | void | 清空集合 |
iterator() | Iterator | 返回迭代器 |
addAll(Collection c) | boolean | 合并集合 |
removeAll(Collection c) | boolean | 删除多个元素 |
retainAll(Collection c) | boolean | 求交集 |
toArray() | Object[] | 转换为数组 |
forEach() | void | 遍历(Java 8+) |
接下来我们逐一讲解。
四、Set 常用方法详解
1.add(E e)—— 添加元素
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java"); // 重复,添加失败
System.out.println(set);返回值:
true:添加成功false:元素已存在(Set 不允许重复)
2.remove(Object o)—— 删除元素
set.remove("Java");
System.out.println(set);
3.contains(Object o)—— 判断元素是否存在
boolean exists = set.contains("Java");
System.out.println(exists);
最常用于过滤、查重等场景。
4.size()—— 获取元素数量
int count = set.size(); System.out.println(count);
5.isEmpty()—— 判断集合是否为空
if (set.isEmpty()) {
System.out.println("空集合");
}
6.clear()—— 清空集合
set.clear();
7.iterator()—— 迭代器遍历
Iterator<String> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
Set 无索引,因此迭代器非常重要。
8.forEach()(Java 8)
更简洁的遍历方式:
set.forEach(System.out::println);
9.addAll(Collection c)—— 合并集合
Set<Integer> a = new HashSet<>(List.of(1, 2)); Set<Integer> b = new HashSet<>(List.of(2, 3)); a.addAll(b); System.out.println(a);
效果类似数学中的 并集。
10.removeAll(Collection c)—— 删除多个元素
a.removeAll(List.of(2)); System.out.println(a);
效果类似数学中的 差集。
11.retainAll(Collection c)—— 求交集
保留与目标集合相同的元素。
Set<Integer> a = new HashSet<>(List.of(1, 2, 3)); Set<Integer> b = new HashSet<>(List.of(2, 3, 4)); a.retainAll(b); System.out.println(a); // [2, 3]
12.toArray()—— 转换为数组
Object[] arr = set.toArray();
如果你需要指定类型:
String[] arr = set.toArray(new String[0]);
五、Set 常用操作总结(常考)
1. 去重操作
Set<Integer> set = new HashSet<>(list);
2. 判断是否包含某元素
if (set.contains(x))
3. 交集、并集、差集
// 并集 a.addAll(b); // 交集 a.retainAll(b); // 差集 a.removeAll(b);
4. 遍历(推荐方式)
set.forEach(System.out::println);
六、Set 使用注意事项(易踩坑)
❗ 1. 添加自定义对象时必须重写 equals() 和 hashCode()
否则 Set 无法正确判断重复。
❗ 2. 遍历过程中不能使用普通 for(因为无索引)
只能:
- for-each
- iterator
- stream
❗ 3. HashSet 不保证顺序
如果需要顺序:
✔ LinkedHashSet
如果需要排序:
✔ TreeSet
七、三大 Set 类的额外方法(补充)
- TreeSet 拥有
first()、last()方法
TreeSet<Integer> ts = new TreeSet<>(); ts.add(3); ts.add(1); ts.add(2); System.out.println(ts.first()); // 1 System.out.println(ts.last()); // 3
- TreeSet 支持子集操作
ts.headSet(2); // 小于 2 的元素 ts.tailSet(2); // 大于等于 2 的元素 ts.subSet(1, 3); // [1,3)
参考资料
到此这篇关于Java Set 中的常用方法示例总结的文章就介绍到这了,更多相关java set常用方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
