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

posted @ 2023-01-13 15:56  小log  阅读(11176)  评论(0编辑  收藏  举报