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表达式,可以更加方便地实现这些操作,使代码更加简洁和易读。希望本文对你有所帮助!