原文: https://www.programiz.com/java-programming/set

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

Java Collections框架的Set接口提供 Java 中数学集的功能。 它扩展了Collection接口。

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


实现Set的类

由于Set是一个接口,因此我们无法从中创建对象。

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

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

Java `Set`接口 - 图1


扩展Set的接口

Set接口还通过以下子接口扩展:

Java `Set`接口 - 图2


如何使用Set

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

  1. // Set implementation using HashSet
  2. Set<String> animals = new HashSet<>();

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


Set方法

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

Set接口中还提供了Collection接口的一些常用方法:

  • add() - 将指定的元素添加到集合中
  • addAll() - 将指定集合的所有元素添加到集合中
  • iterator() - 返回一个迭代器,该迭代器可用于顺序访问集合中的元素
  • remove() - 从集合中移除指定的元素
  • removeAll() - 从另一个指定集合中存在的集合中删除所有元素
  • keepAll() - 保留集合中所有还存在于另一个指定集合中的所有元素
  • 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实现类

  1. import java.util.Set;
  2. import java.util.HashSet;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Creating a set using the HashSet class
  6. Set<Integer> set1 = new HashSet<>();
  7. // Add elements to the set1
  8. set1.add(2);
  9. set1.add(3);
  10. System.out.println("Set1: " + set1);
  11. // Creating another set using the HashSet class
  12. Set<Integer> set2 = new HashSet<>();
  13. // Add elements
  14. set2.add(1);
  15. set2.add(2);
  16. System.out.println("Set2: " + set2);
  17. // Union of two sets
  18. set2.addAll(set1);
  19. System.out.println("Union is: " + set2);
  20. }
  21. }

输出

  1. Set1: [2, 3]
  2. Set2: [1, 2]
  3. Union is: [1, 2, 3]

要了解有关HashSet的更多信息,请访问 Java HashSet


2.TreeSet实现类

  1. import java.util.Set;
  2. import java.util.TreeSet;
  3. import java.util.Iterator;
  4. class Main {
  5. public static void main(String[] args) {
  6. // Creating a set using the TreeSet class
  7. Set<Integer> numbers = new TreeSet<>();
  8. // Add elements to the set
  9. numbers.add(2);
  10. numbers.add(3);
  11. numbers.add(1);
  12. System.out.println("Set using TreeSet: " + numbers);
  13. // Access Elements using iterator()
  14. System.out.print("Accessing elements using iterator(): ");
  15. Iterator<Integer> iterate = numbers.iterator();
  16. while(iterate.hasNext()) {
  17. System.out.print(iterate.next());
  18. System.out.print(", ");
  19. }
  20. }
  21. }

输出

  1. Set using TreeSet: [1, 2, 3]
  2. Accessing elements using iterator(): 1, 2, 3,

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


现在我们知道了Set是什么,我们将在接下来的教程中在EnumSetHashSetLinkedHashSetTreeSet等类中看到其实现。