Java Set 接口
Set 是一个不保证排序,元素不能重复的集合。在本教程中,我们将了解 Java 中的 Set 接口及其方法。
在本教程中,我们将了解 Java 中的 Set 接口及其方法。
Java 集合框架的 Set
接口定义了一个不保证排序,元素不能重复的集合。它扩展了 Collection
接口。
Set
接口与 List
接口不同,集合不能包含重复的元素。
实现 Set 的类
在 Java 集合框架中,以下类实现了 Set
接口:
扩展 Set 的接口
根据不同的需求,还有几个接口扩展了 Set
接口:
如何使用 Set ?
我们先导入 java.util.Set
类和实现类,然后通过 Set
的实现类创建对象:
Set<String> set = new HashSet<>();
在上面的代码中,我们使用 HashSet
类创建了一个名为 set
的 Set
对象。
Set 方法
Set
接口继承了 Collection
接口,所以包含了 Collection
接口的所有方法。
add()
- 将指定的元素添加到 Set 集合中addAll()
- 将指定集合的所有元素添加到 Set 集合中iterator()
- 返回一个可用于访问 Set 集合元素的迭代器remove()
- 从 Set 集合中删除指定的元素removeAll()
- 从 Set 集合中删除由参数指定的另一个集合的所有元素retainAll()
- 保留两个集合的交集clear()
- 删除所有元素size()
- 返回集合的长度(元素数)toArray()
- 返回一个包含集合中所有元素的数组contains()
- 如果集合包含指定元素,则返回true
containsAll()
- 如果集合包含指定集合的所有元素,则返回true
hashCode()
- 返回一个哈希码值(集合中元素的地址)
数学集合运算
Java Set
接口允许我们执行基本的数学集合运算,例如并集、交集和子集。
- 并集 - 我们可以用
x.addAll(y)
得到两个集合的并集 - 交集 - 我们可以用
x.retainAll(y)
得到两个集合的交集 - 子集 - 我们可以用
y.containsAll(x)
检查是否x
是否y
的子集。
Set 示例
HashSet
和 TreeSet
是经常使用的 Set 接口实现类,下面分别以这两个类为例展示 Set
的用法。
示例:HashSet
import java.util.Set;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
Set<Integer> set1 = new HashSet<>();
set1.add(2);
set1.add(3);
System.out.println("Set1: " + set1);
Set<Integer> set2 = new HashSet<>();
set2.add(1);
set2.add(2);
System.out.println("Set2: " + set2);
set2.addAll(set1);
System.out.println("并集: " + set2);
}
}
输出
Set1: [2, 3]
Set2: [1, 2]
并集: [1, 2, 3]
要了解有关 HashSet
的更多信息,请访问教程: Java HashSet。
示例:TreeSet
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Set<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(3);
numbers.add(1);
System.out.println("Set using TreeSet: " + numbers);
// 迭代集合
System.out.print("迭代: ");
for (Integer number : numbers) {
System.out.print(number);
System.out.print(", ");
}
}
}
输出
Set using TreeSet: [1, 2, 3]
迭代: 1, 2, 3,
要了解有关 TreeSet
的更多信息,请访问教程: Java TreeSet。
现在我们知道了什么 Set
是,我们将在接下来的教程学习它的实现在类: EnumSet
, HashSet
, LinkedHashSet
和 TreeSet
。