Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java两个list取交集


在 Java 中,要取两个列表的交集,你有几种不同的方法可以选择。以下是三种常见的实现方式,每种方式都会详细介绍其步骤流程,并提供相应的示例代码。

假设有两个列表:list1 和 list2。

方法一:使用循环遍历

这是一种基本的方法,通过循环遍历一个列表,然后在另一个列表中查找是否存在相同的元素,从而找到交集。

步骤流程:

  1. 对于 list1 中的每个元素,遍历 list2 并检查是否存在相同元素。
  2. 如果存在相同元素,则将其添加到结果列表中。

示例代码:

import java.util.ArrayList;
import java.util.List;

public class IntersectionExample {
    public static <T> List<T> findIntersection(List<T> list1, List<T> list2) {
        List<T> intersection = new ArrayList<>();

        for (T element : list1) {
            if (list2.contains(element)) {
                intersection.add(element);
            }
        }

        return intersection;
    }

    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>(List.of(1, 2, 3, 4, 5));
        List<Integer> list2 = new ArrayList<>(List.of(3, 4, 5, 6, 7));

        List<Integer> intersection = findIntersection(list1, list2);
        System.out.println("Intersection: " + intersection);
    }
}

方法二:使用 Java 8 的 Stream API

Java 8 引入了 Stream API,它提供了更简洁的方式来处理集合操作,包括交集的计算。

步骤流程:

  1. 将两个列表转换为流。
  2. 使用 filter 操作保留那些在另一个流中存在的元素。
  3. 将结果流转换回列表。

示例代码:

import java.util.List;
import java.util.stream.Collectors;

public class IntersectionExample {
    public static <T> List<T> findIntersection(List<T> list1, List<T> list2) {
        return list1.stream()
            .filter(list2::contains)
            .collect(Collectors.toList());
    }

    public static void main(String[] args) {
        List<Integer> list1 = List.of(1, 2, 3, 4, 5);
        List<Integer> list2 = List.of(3, 4, 5, 6, 7);

        List<Integer> intersection = findIntersection(list1, list2);
        System.out.println("Intersection: " + intersection);
    }
}

方法三:使用 Apache Commons Collections 库

Apache Commons Collections 是一个常用的 Java 第三方库,提供了许多用于集合操作的实用工具类。

步骤流程:

  1. 引入 Apache Commons Collections 依赖。
  2. 使用 CollectionUtils.intersection() 方法计算交集。

示例代码(使用 Maven 依赖):

<!-- Maven 依赖 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>
import org.apache.commons.collections4.CollectionUtils;

import java.util.List;

public class IntersectionExample {
    public static void main(String[] args) {
        List<Integer> list1 = List.of(1, 2, 3, 4, 5);
        List<Integer> list2 = List.of(3, 4, 5, 6, 7);

        List<Integer> intersection = (List<Integer>) CollectionUtils.intersection(list1, list2);
        System.out.println("Intersection: " + intersection);
    }
}

以上是三种不同的方法来计算两个列表的交集,你可以根据你的项目需求和偏好选择其中之一。

假设我们有两个集合:`set1`和`set2`,它们的类型都是`Set<T>`,其中`T`是集合中元素的类型。###方法一:使用retain ...
下面我将为您介绍三种常见的实现方式,包括使用循环、使用Java8Stream和使用GoogleGuava库。###方法三:使用GoogleG ...
假设我们有一个List包含一些元素:###使用索引通过索引来获取List中的元素。###使用for-each循环通过for-each循环遍历 ...
假设我们有两个List,分别是list1和list2,我们的目标是将它们合并成一个新的List。###使用ApacheCommonsColl ...
假设有两个列表`list1`和`list2`,你想要得到它们的差集,即`list1-list2`。###使用循环和条件判断这是一种基本的方法 ...