Java8 List 取交集

在Java编程中,我们经常需要对列表进行操作,其中一个常见的操作就是取两个列表的交集。Java8为我们提供了一种简便的方法来实现这一操作,即使用Stream API来对列表进行操作。在本文中,我们将介绍如何利用Java8中的Stream API来取两个List的交集。

Stream API 简介

Stream API是Java8中引入的一种新的抽象,它允许我们以一种函数式编程的风格来操作集合。通过Stream API,我们可以对集合进行过滤、映射、排序等操作。Stream API提供了丰富的方法来对集合进行操作,其中包括filter()map()sorted()distinct()等。

取两个List的交集

在Java8中,我们可以利用Stream API来非常方便地取两个List的交集。下面我们将通过一个简单的示例来演示如何实现这一操作。

首先,我们定义两个List:

List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);

然后,我们使用Stream API来取两个List的交集:

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

上面的代码中,我们首先将list1转换为Stream,然后使用filter()方法对其中的元素进行过滤,只保留在list2中也存在的元素。最后,我们使用collect()方法将过滤后的元素收集到一个新的List中,即为两个List的交集。

示例代码

下面是完整的示例代码:

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

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

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

        System.out.println("Intersection of list1 and list2: " + intersection);
    }
}

运行上述代码,我们将得到输出结果:

Intersection of list1 and list2: [3, 4, 5]

总结

通过上述示例,我们看到利用Java8中的Stream API可以非常方便地取两个List的交集。Stream API提供了丰富的方法来对集合进行操作,使得我们能够以一种函数式编程的风格来处理集合数据。希望本文对你有所帮助,谢谢阅读!

参考文献

  • [Java 8 Stream API](
  • [Java 8 Collectors](