Java Stream对三个List取交集

简介

在Java中,我们可以使用Stream API来操作集合,其中包括对多个集合进行交集操作。本文将介绍如何使用Java Stream对三个List进行交集操作。

流程

下面是实现这一目标的步骤:

flowchart TD
	A(创建三个List) --> B(使用Stream获取交集)
	B --> C(将交集结果转换为List)
	C --> D(打印交集结果)

代码实现

创建三个List

首先,我们需要创建三个List,分别表示三个集合,我们可以使用Arrays.asList()方法来创建List,并添加一些元素。

List<String> list1 = Arrays.asList("A", "B", "C", "D", "E");
List<String> list2 = Arrays.asList("C", "D", "E", "F", "G");
List<String> list3 = Arrays.asList("E", "F", "G", "H", "I");
使用Stream获取交集

接下来,我们将使用Stream API来获取三个List的交集。我们可以使用stream()方法将List转换为Stream对象,并使用filter()方法来筛选出交集的元素。

List<String> intersection = list1.stream()
        .filter(list2::contains) // 筛选出list1和list2的交集元素
        .filter(list3::contains) // 筛选出list1、list2和list3的交集元素
        .collect(Collectors.toList()); // 将交集结果转换为List
将交集结果转换为List

在上面的代码中,我们使用了collect()方法将交集结果转换为List。Collectors.toList()方法用于将Stream中的元素收集到List中。

打印交集结果

最后,我们可以使用System.out.println()方法打印交集的结果。

System.out.println(intersection);

完整的代码如下所示:

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

public class Main {
    public static void main(String[] args) {
        List<String> list1 = Arrays.asList("A", "B", "C", "D", "E");
        List<String> list2 = Arrays.asList("C", "D", "E", "F", "G");
        List<String> list3 = Arrays.asList("E", "F", "G", "H", "I");

        List<String> intersection = list1.stream()
                .filter(list2::contains) // 筛选出list1和list2的交集元素
                .filter(list3::contains) // 筛选出list1、list2和list3的交集元素
                .collect(Collectors.toList()); // 将交集结果转换为List

        System.out.println(intersection);
    }
}

类图

下面是本文中涉及的类的类图表示:

classDiagram
    class Main {
        +main(args: String[]): void
    }

总结

本文介绍了如何使用Java Stream对三个List进行交集操作。通过创建三个List并使用Stream API,我们可以轻松地获取集合的交集。希望这篇文章能够帮助刚入行的小白理解如何实现这一功能。