Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java两个集合取交集


在 Java 中,有多种方法可以计算两个集合的交集。我将为您介绍以下几种常见的实现方式,以及每种方式的步骤流程和示例代码。

假设我们有两个集合: set1set2,它们的类型都是 Set<T>,其中 T 是集合中元素的类型。

方法一:使用 retainAll()方法

这是 Java 集合框架提供的最简单的方法之一,可以直接在一个集合上调用 retainAll() 方法,传递另一个集合作为参数,以获取两者的交集。

步骤流程:

调用 set1.retainAll(set2) 方法,将会修改 set1,使其只保留和 set2 的交集部分。

示例代码:

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

public class Main {
    public static void main(String[] args) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();

        set1.add(1);
        set1.add(2);
        set1.add(3);

        set2.add(3);
        set2.add(4);
        set2.add(5);

        set1.retainAll(set2);

        System.out.println("Intersection: " + set1);  // 输出:Intersection: [3]
    }
}

方法二:使用 Java 8 的 Stream API

Java 8 引入了 Stream API,使集合操作更加灵活。可以通过将两个集合转换为流,然后使用 filter()collect() 方法来获取交集。

步骤流程:

  1. 将两个集合转换为流。
  2. 使用 filter() 方法保留属于第二个集合的元素。
  3. 使用 collect() 方法将过滤后的结果收集回一个新的集合。

示例代码:

import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();

        set1.add(1);
        set1.add(2);
        set1.add(3);

        set2.add(3);
        set2.add(4);
        set2.add(5);

        Set<Integer> intersection = set1.stream()
                .filter(set2::contains)
                .collect(Collectors.toSet());

        System.out.println("Intersection: " + intersection);  // 输出:Intersection: [3]
    }
}

方法三:使用第三方库 Apache Commons Collections

Apache Commons Collections 库提供了 CollectionUtils 类,其中有一个 intersection() 方法可以用来计算两个集合的交集。

Maven 依赖坐标:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>

Gradle 依赖坐标:

implementation 'org.apache.commons:commons-collections4:4.4'

步骤流程:

  1. 导入 CollectionUtils 类。
  2. 调用 CollectionUtils.intersection(set1, set2) 方法,该方法会返回一个新的集合,包含两个集合的交集。

示例代码:

import org.apache.commons.collections4.CollectionUtils;

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

public class Main {
    public static void main(String[] args) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();

        set1.add(1);
        set1.add(2);
        set1.add(3);

        set2.add(3);
        set2.add(4);
        set2.add(5);

        Set<Integer> intersection = CollectionUtils.intersection(set1, set2);

        System.out.println("Intersection: " + intersection);  // 输出:Intersection: [3]
    }
}

这些是在 Java 中计算两个集合交集的几种常见方式。您可以根据项目需求选择适合的方法。

###方法一:使用循环遍历这是一种基本的方法,通过循环遍历一个列表,然后在另一个列表中查找是否存在相同的元素,从而找到交集。示例代码:### ...
下面我将为您介绍三种常见的实现方式,包括使用循环、使用Java8Stream和使用GoogleGuava库。###方法三:使用GoogleG ...
它遍历第一个集合中的每个元素,并检查是否在第二个集合中存在,如果不存在就添加到差集中。Maven依赖:Gradle依赖:这些是计算两个集合差 ...
集合(set)是一个无序且不重复的元素集合。可以使用大括号{}或者内置类set来创建集合。 ...
###方式一:使用取模运算符%这是最常见和简单的方式,Java提供了`%`运算符用于取余数。示例代码:###方式三:使用BigInteger ...