Java8 List 取交集和差集

在Java编程中,经常需要对集合进行操作,比如取两个List的交集和差集。在Java8中,由于引入了新的Stream API,可以更加方便地实现这些操作。本文将介绍如何使用Java8对List进行交集和差集的操作。

什么是交集和差集

在集合运算中,交集是指两个集合中共有的元素,差集是指一个集合中有但另一个集合中没有的元素。比如,对于两个List A 和 B:

  • 交集:A 中有的元素同时也在 B 中
  • 差集:A 中有的元素但不在 B 中

使用Java8实现交集和差集

在Java8中,可以使用Stream API和Lambda表达式来实现对List的交集和差集操作。下面将分别介绍如何实现取交集和差集。

取交集

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);

        List<Integer> list2 = new ArrayList<>();
        list2.add(2);
        list2.add(3);
        list2.add(4);

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

        System.out.println("Intersection: " + intersection);
    }
}

上面的代码中,先创建了两个List list1 和 list2,然后通过stream()方法将list1转换为流,使用filter()方法过滤出同时包含在list2中的元素,最后使用toList()方法将结果转换为List。

取差集

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);

        List<Integer> list2 = new ArrayList<>();
        list2.add(2);
        list2.add(3);
        list2.add(4);

        List<Integer> difference = list1.stream()
                .filter(e -> !list2.contains(e))
                .toList();

        System.out.println("Difference: " + difference);
    }
}

上面的代码中,同样先创建了两个List list1 和 list2,然后通过stream()方法将list1转换为流,使用filter()方法过滤出不包含在list2中的元素,最后使用toList()方法将结果转换为List。

流程图

flowchart TD
    A(开始) --> B(创建两个List)
    B --> C(list1转换为流)
    C --> D(取交集或差集)
    D --> E(输出结果)
    E --> F(结束)

总结

本文介绍了如何使用Java8对List进行交集和差集的操作。通过Stream API和Lambda表达式,可以更加方便地实现这些操作,使代码更加简洁和易读。希望本文对你有所帮助!