前言

如果是自定义类,需要重写equals方法,如果使用Set集合,还需要重写hashCode方法;如下以User为例子:

public class User{private Integer id;private String name;@Overridepublic boolean equals(Object obj) {if(obj == null) {return false;}if(!(obj instanceof User)) {return false;}User p = (User) obj;if(this == p) {return true;}if(this.id.equals(p.id)) {return true;}return false;}@Overridepublic int hashCode() {return this.id.hashCode();}
}

方法一:使用集合自带API

使用List

//List<User> aList;
//List<User> bList;//交集
aList.retainAll(bList);//差集(aList - bList)
aList.removeAll(bList);//并集,因list不能自动去重,需要手动求差集
List<User> exceptList = new ArrayList<>(bList);
exceptList.removeAll(aList);
aList.addAll(exceptList);
//或者
aList.addAll(bList);
List<User> unionList = aList.parallelStream().distinct().collect(Collectors.toList());

使用Set

Set<User> aSet;
Set<User> bSet;//交集
aSet.retainAll(bSet);//差集(aSet - bSet)
aSet.removeAll(bSet);//并集
aSet.addAll(bSet);

推荐使用HashSet进行集合操作,HashSet底层是封装的HashMap,在查找元素上时间复杂度为 O(1),运算速度会快很多;

方法二:使用parallelStream()

Set<User> aSet = new HashSet<>();
Set<User> bSet = new HashSet<>();//交集
aSet = aSet.parallelStream().filter(x -> bSet.contains(x)).collect(Collectors.toSet());//差集
aSet = aSet.parallelStream().filter(x -> !bSet.contains(x)).collect(Collectors.toSet());

Java中求集合交集、并集、差集相关推荐

  1. A和B 单链表表示 集合,求其 交集 并集 差集

    A和B 单链表表示 集合的 交集 并集 差集 /* A和B 单链表表示 集合的 交集 并集 差集 */ //#include <iostream> //using namespace st ...

  2. STL 算法vector/set集合-交集,并集,差集,对称差

    针对这里提及的四个集合运算必须特别注意:  1.第一个算法需保证第一集合和第二集合有序,并从小到大排序,内部使用默认"<"操作符比较元素大小: 2.第二个算法需保证第一集合和 ...

  3. java 两个list 交集 并集 差集 去重复并集

    去重并集 例如:求List1和List2的并集,并实现去重. 思路是:先将list中与list2重复的去掉,之后将list2的元素全部添加进去. public static void test1(Li ...

  4. Python中求集合交集的intersection()方法

    选择题 以下python代码的输出结果是什么? set0 = {'a','b','c'} set1 = {'b','c','d'} set2 = {'c','d','e'} newset = set0 ...

  5. c++链表实现集合交集并集差集运算

    #include<iostream> using namespace std; //创建链表 struct Node {     int content;     Node* next; ...

  6. oracle 并集 时间_Oracle集合运算符 交集 并集 差集

    集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...

  7. JAVA Hashset求集合的交集并集差集

    JAVA Hashset求集合的交集并集差集 Hashset是Set接口较为常见的一个子类,该子类的最大特点是不允许保存重复的元素,并且所有的内容都采用散列(无序)的方式进行存储. package c ...

  8. java中set集合的交集、并集、差集

    java中set集合的交集.并集.差集 集合关系示例图 示例代码 public static void contextLoads() {List<String> a= Arrays.asL ...

  9. 27.python中的集合:求集合的交集、求集合的并集;竖杠 ”|“ 也表示并集、update()更新并集结果、集合的差集、集合的判定

    # 求集合的交集 # s1 = {'1', '2', '3', 4} # s2 = {1, 4, 5, 6} # result = s1.intersection(s2) # 注意:intersect ...

最新文章

  1. R语言ggplot2可视化绘制线图(line plot)、使用gghighlight包突出高亮满足条件的线图、并保留其它线图的色彩(而不是灰色)自定义非高亮线图的透明度
  2. 「图神经网络东」最新2022综述
  3. 查看git是否安装_Java程序员的必备Linux运维技能-安装git
  4. ulimit问题 关于nproc设置
  5. [BZOJ4320][ShangHai2006]Homework(根号分治+并查集)
  6. CSDN 代码不能语法高亮的原因
  7. Python之数据分析(动画效果、animation模块、气泡动画)
  8. ArcIMS9.2新增地图服务时check your map file's layers and data source connections解决
  9. 空号检测和手机在网状态查询的区别
  10. 皮尔森相关系数、皮尔逊相关系数(Pearson correlation coefficient)的存在性问题
  11. Eclipse 快捷键
  12. python 使用PIL库批量修改图片大小
  13. webpack2系列step1--HTML
  14. MAS移动行业应用解决方案
  15. 联想m920t装红旗linux中SPik,联想ThinkCentre M920t台式机装win10系统及bios设置(uefi+gpt)...
  16. php微信支付返回值,php微信支付全记录
  17. TensorRT加速
  18. 【转】游戏开发高度图有关资料与Balder中的相关支持
  19. iOS_Tagged Pointer是什么,结构
  20. 小白学习Spark04-Spark调优与调试

热门文章

  1. 安装x86版 OS X的系统要求
  2. 识别不了移动硬盘的解决方法
  3. Linux下 PyDev + Eclipse安装方法
  4. openfire 开发之 openfire-api for ruby
  5. php7安装详解(windows环境)
  6. 35岁的软件测试从业人员还有出路?听10年测试老鸟易哥怎么说!
  7. AD使用中各个层的含义,阻焊层与驻焊层的区别;
  8. Cesium之鼠标事件绑定和移除
  9. Cesium实践(4)——空间数据加载
  10. error: (-215:Assertion failed) npoints = 0 (depth == CV_32F || depth == CV_32F || depth ==CV_32S