Java取两个集合的交集

简介

在Java中,我们经常需要对集合进行各种操作,其中一个常见的操作是取两个集合的交集。本文将教你如何使用Java的Stream API来实现这一功能。

流程

为了更好地理解整个过程,下面是一个流程图,展示了实现"java取两个集合的交集 stream"的步骤。

journey
    title 整个流程
    section 创建两个集合
    section 使用Stream API取交集
    section 输出交集结果

下面将详细介绍每个步骤所需的代码和解释。

代码实现

步骤1:创建两个集合

首先,我们需要创建两个集合,这里我们假设集合的元素类型为String。

List<String> list1 = Arrays.asList("apple", "banana", "orange", "grape");
List<String> list2 = Arrays.asList("banana", "grape", "kiwi", "pear");

上述代码使用Arrays.asList方法创建了两个List对象,并分别初始化了元素。你可以根据实际情况替换这些元素。

步骤2:使用Stream API取交集

接下来,我们将使用Java的Stream API来取两个集合的交集。

List<String> intersection = list1.stream()
        .filter(list2::contains)
        .collect(Collectors.toList());

上述代码使用了Stream API的filter方法来过滤出list1中与list2相同的元素,并通过collect方法将结果收集到一个新的List中。

步骤3:输出交集结果

最后,我们可以将交集结果输出到控制台。

System.out.println("Intersection: " + intersection);

上述代码使用System.out.println方法将交集结果输出到控制台。

完整的代码如下所示:

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

public class IntersectionExample {
    public static void main(String[] args) {
        List<String> list1 = Arrays.asList("apple", "banana", "orange", "grape");
        List<String> list2 = Arrays.asList("banana", "grape", "kiwi", "pear");
        
        List<String> intersection = list1.stream()
                .filter(list2::contains)
                .collect(Collectors.toList());
        
        System.out.println("Intersection: " + intersection);
    }
}

结论

通过以上步骤,我们成功地使用Java的Stream API取得了两个集合的交集。这种方法简洁高效,适用于处理大型集合。希望这篇文章能够帮助你理解并掌握这一技巧。