Java求Set交集

简介

在编程中,我们经常需要对集合进行操作,其中一个常见的操作就是求两个集合的交集。在Java中,我们可以使用Set集合来实现这个功能。Set是一种不允许包含重复元素的集合,因此可以很方便地用来求交集。

本文将介绍如何使用Java求两个Set集合的交集,并提供相应的代码示例。

Set集合

在开始之前,我们先来了解一下Set集合的基本概念。Set是Java集合框架中的一种接口,它继承自Collection接口,并且不允许包含重复元素。Set集合有多种实现类,包括HashSet、TreeSet、LinkedHashSet等。

  • HashSet:基于哈希表实现,不保证元素的顺序,允许包含null元素。
  • TreeSet:基于红黑树实现,按照元素的自然顺序进行排序,或者根据比较器进行排序。
  • LinkedHashSet:基于哈希表和链表实现,按照元素的插入顺序进行排序。

Set交集操作

求两个Set集合的交集,即找出两个集合中共同的元素。在Java中,我们可以使用retainAll()方法来实现这个功能。retainAll()方法会修改原始Set集合,使其只包含两个集合中都有的元素。

以下是retainAll()方法的定义:

boolean retainAll(Collection<?> c)

该方法接受一个Collection类型的参数c,表示要求交集的集合。返回值为boolean类型,表示该操作是否修改了原始Set集合。

下面是一个求Set交集的示例代码:

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

public class SetIntersectionExample {
    public static void main(String[] args) {
        // 创建两个Set集合
        Set<Integer> set1 = new HashSet<>();
        set1.add(1);
        set1.add(2);
        set1.add(3);

        Set<Integer> set2 = new HashSet<>();
        set2.add(2);
        set2.add(3);
        set2.add(4);

        // 求交集
        set1.retainAll(set2);

        // 输出结果
        System.out.println("Set1交Set2的结果为:" + set1);
    }
}

运行上述代码,输出结果为:

Set1交Set2的结果为:[2, 3]

可以看到,最终的结果是包含了两个集合中共同的元素2和3。

甘特图

下面是一个使用mermaid语法绘制的甘特图,展示了上述代码的执行过程。

gantt
    title Set交集操作甘特图
    dateFormat  YYYY-MM-DD
    section 创建集合
    创建集合1           :done, 2022-01-01, 1d
    创建集合2           :done, 2022-01-01, 1d
    section 求交集
    求交集操作           :done, 2022-01-02, 1d
    section 输出结果
    输出结果            :done, 2022-01-03, 1d

上述甘特图展示了整个过程的时间线,从创建两个集合,到求交集操作,最后输出结果。

序列图

下面是一个使用mermaid语法绘制的序列图,展示了上述代码的执行流程。

sequenceDiagram
    participant SetIntersectionExample.java
    participant Set
    participant HashSet

    SetIntersectionExample.java ->> Set: 创建集合1
    SetIntersectionExample.java ->> Set: 创建集合2
    SetIntersectionExample.java ->> HashSet: 添加元素1
    SetIntersectionExample.java ->> HashSet: 添加元素2
    SetIntersectionExample.java ->> HashSet: 添加元素3
    SetIntersectionExample.java ->> HashSet: 添加元素2
    SetIntersectionExample.java ->> HashSet: 添加元素3
    SetIntersectionExample.java ->> HashSet: 添加元素4
    SetIntersectionExample.java ->> Set: 求交集
    SetIntersectionExample.java ->> Set: 输出结果

上述序列图展示了整个过程的执行流程,包括创建集合、添加元素、求交集和输出结果