0
点赞
收藏
分享

微信扫一扫

java8 求两个list的差集

棒锤_45f2 2024-01-01 阅读 15

求两个list的差集是一个常见的问题,特别是在Java 8中,我们可以利用Stream API来更方便地解决这个问题。在本文中,我将向你介绍如何使用Java 8来求两个list的差集。

整体流程如下:

  1. 创建两个list,并初始化它们。
  2. 将list转换为stream。
  3. 使用filter()方法过滤出不在另一个list中的元素。
  4. 将stream转换回list。
  5. 输出结果。

接下来,我将详细介绍每一步需要做什么,并提供相应的代码和注释。

首先,我们需要创建两个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的差集的方法。希望本文对你有所帮助!

举报

相关推荐

0 条评论