Java List 集合取 交集、并集、差集
1. 概述
在工作中,经常会遇到对list集合取交集、并集、差集的时候,本文在这里提供了一些方法
概念定义:
- 交集: 取2个集合中,相同的部分 ;
- 并集: 将2个集合,合并为一个集合;
- 差集: 取2个集合中,不相同的部分 (A差集 B,取 A中与B不相同的元素)
首先我们定义两个list集合, 通过循环都可以实现上述集合运算,因此通过循环方法本文就不列出了。
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
ArrayList<Integer> list2 = new ArrayList<Integer>( Arrays.asList(3,4,5));
2. 交集
- 通过CollectionUtils工具包 (推荐),需要引入CollectionUtils 工具包
// 引入的包
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
// 代码
Collection intersection = CollectionUtils.intersection(list1, list2);
System.out.println("intersection CollectionUtils 交集结果是: " + intersection);
- 通过retainAll方法,会修改原集合
list1.retainAll(list2);
System.out.println("intersection retainAll 方法 交集结果是: " + list1);
3 并集
- 通过CollectionUtils工具包 (推荐),需要引入CollectionUtils 工具包
// 引入的包
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
// 代码
Collection union = CollectionUtils.union(list1, list2);
System.out.println("CollectionUtils 并集结果是: " + union);
- 通过set合并
Set<Integer> unionSet = new HashSet<>();
unionSet.addAll(list1);
unionSet.addAll(list2);
System.out.println("set 并集结果是:" + unionSet);
4. 差集
- 通过CollectionUtils工具包 (推荐),需要引入CollectionUtils 工具包
// 引入的包
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
// 代码
Collection subtract = CollectionUtils.subtract(list1, list2);
System.out.println("CollectionUtils 差集结果是: " + subtract);
- 通过reoveAll方法,会修改原集合
list1.removeAll(list2);
System.out.println("removeAll 差集结果是: " + list1);
参考:
https://blog.csdn.net/HaHa_Sir/article/details/126111603