Java中求集合交集、并集、差集
前言
如果是自定义类,需要重写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中求集合交集、并集、差集相关推荐
- A和B 单链表表示 集合,求其 交集 并集 差集
A和B 单链表表示 集合的 交集 并集 差集 /* A和B 单链表表示 集合的 交集 并集 差集 */ //#include <iostream> //using namespace st ...
- STL 算法vector/set集合-交集,并集,差集,对称差
针对这里提及的四个集合运算必须特别注意: 1.第一个算法需保证第一集合和第二集合有序,并从小到大排序,内部使用默认"<"操作符比较元素大小: 2.第二个算法需保证第一集合和 ...
- java 两个list 交集 并集 差集 去重复并集
去重并集 例如:求List1和List2的并集,并实现去重. 思路是:先将list中与list2重复的去掉,之后将list2的元素全部添加进去. public static void test1(Li ...
- Python中求集合交集的intersection()方法
选择题 以下python代码的输出结果是什么? set0 = {'a','b','c'} set1 = {'b','c','d'} set2 = {'c','d','e'} newset = set0 ...
- c++链表实现集合交集并集差集运算
#include<iostream> using namespace std; //创建链表 struct Node { int content; Node* next; ...
- oracle 并集 时间_Oracle集合运算符 交集 并集 差集
集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...
- JAVA Hashset求集合的交集并集差集
JAVA Hashset求集合的交集并集差集 Hashset是Set接口较为常见的一个子类,该子类的最大特点是不允许保存重复的元素,并且所有的内容都采用散列(无序)的方式进行存储. package c ...
- java中set集合的交集、并集、差集
java中set集合的交集.并集.差集 集合关系示例图 示例代码 public static void contextLoads() {List<String> a= Arrays.asL ...
- 27.python中的集合:求集合的交集、求集合的并集;竖杠 ”|“ 也表示并集、update()更新并集结果、集合的差集、集合的判定
# 求集合的交集 # s1 = {'1', '2', '3', 4} # s2 = {1, 4, 5, 6} # result = s1.intersection(s2) # 注意:intersect ...
最新文章
- R语言ggplot2可视化绘制线图(line plot)、使用gghighlight包突出高亮满足条件的线图、并保留其它线图的色彩(而不是灰色)自定义非高亮线图的透明度
- 「图神经网络东」最新2022综述
- 查看git是否安装_Java程序员的必备Linux运维技能-安装git
- ulimit问题 关于nproc设置
- [BZOJ4320][ShangHai2006]Homework(根号分治+并查集)
- CSDN 代码不能语法高亮的原因
- Python之数据分析(动画效果、animation模块、气泡动画)
- ArcIMS9.2新增地图服务时check your map file's layers and data source connections解决
- 空号检测和手机在网状态查询的区别
- 皮尔森相关系数、皮尔逊相关系数(Pearson correlation coefficient)的存在性问题
- Eclipse 快捷键
- python 使用PIL库批量修改图片大小
- webpack2系列step1--HTML
- MAS移动行业应用解决方案
- 联想m920t装红旗linux中SPik,联想ThinkCentre M920t台式机装win10系统及bios设置(uefi+gpt)...
- php微信支付返回值,php微信支付全记录
- TensorRT加速
- 【转】游戏开发高度图有关资料与Balder中的相关支持
- iOS_Tagged Pointer是什么,结构
- 小白学习Spark04-Spark调优与调试
热门文章
- 安装x86版 OS X的系统要求
- 识别不了移动硬盘的解决方法
- Linux下 PyDev + Eclipse安装方法
- openfire 开发之 openfire-api for ruby
- php7安装详解(windows环境)
- 35岁的软件测试从业人员还有出路?听10年测试老鸟易哥怎么说!
- AD使用中各个层的含义,阻焊层与驻焊层的区别;
- Cesium之鼠标事件绑定和移除
- Cesium实践(4)——空间数据加载
- error: (-215:Assertion failed) npoints = 0 (depth == CV_32F || depth == CV_32F || depth ==CV_32S