Java Set 接口

Set 是一个不保证排序,元素不能重复的集合。在本教程中,我们将了解 Java 中的 Set 接口及其方法。

在本教程中,我们将了解 Java 中的 Set 接口及其方法。

Java 集合框架的 Set 接口定义了一个不保证排序,元素不能重复的集合。它扩展了 Collection 接口。

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

实现 Set 的类

在 Java 集合框架中,以下类实现了 Set 接口:

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

扩展 Set 的接口

根据不同的需求,还有几个接口扩展了 Set 接口:

SortedSet 和 NavigableSet 接口扩展了 Set 接口

如何使用 Set ?

我们先导入 java.util.Set 类和实现类,然后通过 Set 的实现类创建对象:

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

在上面的代码中,我们使用 HashSet 类创建了一个名为 setSet 对象。

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 示例

HashSetTreeSet 是经常使用的 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 是,我们将在接下来的教程学习它的实现在类: EnumSetHashSetLinkedHashSetTreeSet