跳到主要内容

Java Set 接口

提示
  1. 基本概念:Java 的 Set 接口提供了集合的特性,扩展自 Collection 接口,不允许重复元素。
  2. Set 实现类Set 接口的实现类包括 HashSetLinkedHashSetEnumSetTreeSet,每个类都有其特定功能。
  3. 集合操作Set 接口支持基本的数学集合操作,如并集、交集和子集,通过方法如 addAll()retainAll()containsAll() 实现。

Java Collections 框架的 Set 接口提供了数学集合的特性。它扩展了 Collection 接口。

List 接口不同,集合不能包含重复元素。

实现 Set 的类

由于 Set 是一个接口,我们不能从它创建对象。

为了使用 Set 接口的功能,我们可以使用以下类:

这些类在 Collections 框架中定义,并实现了 Set 接口。

SortedSet 和 NavigableSet 接口扩展了 Set 接口。

扩展 Set 的接口

Set 接口也被以下子接口扩展:

EnumSet、HashSet、LinkedHastSet 和 TreeSet 实现了 Set 接口。

如何使用 Set?

在 Java 中,我们必须导入 java.util.Set 包才能使用 Set

// 使用 HashSet 实现 Set
Set<String> animals = new HashSet<>();

这里,我们创建了一个名为 animalsSet。我们使用了 HashSet 类来实现 Set 接口。

Set 的方法

Set 接口包含了 Collection 接口的所有方法。这是因为 CollectionSet 的超接口。

Collection 接口中一些在 Set 接口中也可用的常用方法包括:

  • add() - 向集合中添加指定元素
  • addAll() - 将指定集合中的所有元素添加到集合中
  • iterator() - 返回一个迭代器,用于顺序访问集合中的元素
  • remove() - 从集合中移除指定元素
  • removeAll() - 移除集合中存在于另一个指定集合中的所有元素
  • retainAll() - 保留集合中也存在于另一个指定集合中的所有元素
  • clear() - 移除集合中的所有元素
  • size() - 返回集合的长度(元素数量)
  • toArray() - 返回一个包含集合所有元素的数组
  • contains() - 如果集合包含指定元素,则返回 true
  • containsAll() - 如果集合包含指定集合的所有元素,则返回 true
  • hashCode() - 返回集合中元素的哈希码值(元素在集合中的地址)

要了解更多 Set 接口的方法,请访问 Java Set(官方 Java 文档)

Set 操作

Java Set 接口允许我们执行基本的数学集合操作,如并集、交集和子集。

  • 并集 - 要获取两个集合 xy 的并集,我们可以使用 x.addAll(y)
  • 交集 - 要获取两个集合 xy 的交集,我们可以使用 x.retainAll(y)
  • 子集 - 要检查 x 是否是 y 的子集,我们可以使用 y.containsAll(x)

Set 接口的实现

1. 实现 HashSet 类

import java.util.Set;
import java.util.HashSet;

class Main {

public static void main(String[] args) {
// 使用 HashSet 类创建一个集合
Set<Integer> set1 = new HashSet<>();

// 向 set1 添加元素
set1.add(2);
set1.add(3);
System.out.println("Set1: " + set1);

// 使用 HashSet 类创建另一个集合
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

2. 实现 TreeSet 类

import java.util.Set;
import java.util.TreeSet;
import java.util.Iterator;

class Main {

public static void main(String[] args) {
// 使用 TreeSet 类创建一个集合
Set<Integer> numbers = new TreeSet<>();

// 向集合中添加元素
numbers.add(2);
numbers.add(3);
numbers.add(1);
System.out.println("使用 TreeSet 的集合: " + numbers);

// 使用 iterator() 访问元素
System.out.print("使用 iterator() 访问元素: ");
Iterator<Integer> iterate = numbers.iterator();
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}

}
}

输出

使用 TreeSet 的集合: [1, 2, 3]
使用 iterator() 访问元素: 1, 2, 3,

要了解更多关于 TreeSet 的信息,请访问 Java TreeSet

现在我们已经了解了 Set 是什么,我们将在下一个教程中看到它在 EnumSetHashSetLinkedHashSetTreeSet 等类中的实现。