求两个list的差集是一个常见的问题,特别是在Java 8中,我们可以利用Stream API来更方便地解决这个问题。在本文中,我将向你介绍如何使用Java 8来求两个list的差集。
整体流程如下:
- 创建两个list,并初始化它们。
- 将list转换为stream。
- 使用filter()方法过滤出不在另一个list中的元素。
- 将stream转换回list。
- 输出结果。
接下来,我将详细介绍每一步需要做什么,并提供相应的代码和注释。
首先,我们需要创建两个list,并初始化它们。假设我们有两个list,分别是list1和list2。代码如下所示:
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);
然后,我们需要将list转换为stream。Stream是Java 8中新引入的一个功能强大的API,它可以用于处理集合数据。代码如下所示:
Stream<Integer> stream1 = list1.stream();
Stream<Integer> stream2 = list2.stream();
接下来,我们使用filter()方法过滤出不在另一个list中的元素。filter()方法接受一个Predicate对象,用于筛选满足条件的元素。我们可以使用contains()方法来判断一个元素是否存在于另一个list中。代码如下所示:
List<Integer> diff = stream1.filter(e -> !list2.contains(e)).collect(Collectors.toList());
在上面的代码中,我们使用filter()方法过滤出不在list2中的元素,并将它们收集到一个新的list中。
最后,我们将stream转换回list,并输出结果。代码如下所示:
System.out.println("差集为:" + diff);
完整的代码如下所示:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class DifferenceOfLists {
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);
Stream<Integer> stream1 = list1.stream();
Stream<Integer> stream2 = list2.stream();
List<Integer> diff = stream1.filter(e -> !list2.contains(e)).collect(Collectors.toList());
System.out.println("差集为:" + diff);
}
}
以上就是使用Java 8求两个list的差集的方法。希望本文对你有所帮助!