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](