求Map的交集、并集、差集

如果两个Map有相同的键,交集求最小值,并集求最大值。

public class HashMapTest {// 求交集private static Map<String,Integer> Intersection(Map<String,Integer> mp1, Map<String,Integer> mp2) {List<String> strRemove = new ArrayList<String>();Map<String,Integer> res = new HashMap<String,Integer>(mp1);for (String s: res.keySet()){if (!mp2.containsKey(s)) {//mp1中存在但mp2中不存在strRemove.add(s);}else{  //mp1中存在mp2中存在res.put(s,Math.min(res.get(s),mp2.get(s)));}}for (String s: strRemove) {res.remove(s);}return res;}// 求并集private static Map<String,Integer> Union(Map<String,Integer> mp1, Map<String,Integer> mp2) {Map<String,Integer> res = new HashMap<String,Integer>(mp1);for (String s: mp2.keySet()){if (mp1.containsKey(s)) {//mp2中存在 mp1中存在res.put(s,Math.max(mp1.get(s),mp2.get(s)));}else{    //mp2中存在 mp1中不存在res.put(s,mp2.get(s));}}return res;}// 求差集private static Map<String,Integer> Difference(Map<String,Integer> mp1, Map<String,Integer> mp2) {List<String> strRemove = new ArrayList<String>();Map<String,Integer> res = new HashMap<String,Integer>(mp1);for (String s: res.keySet()) {if (mp2.containsKey(s)){strRemove.add(s);}}for (String s: strRemove) {res.remove(s);}return res;}// 计数 生成两个Mapprivate static Map<String,Integer> Counter(String string){Map<String,Integer> mp = new HashMap<String,Integer>();String[] strArray = string.split("");int cnt;for (String s:strArray){cnt = mp.getOrDefault(s,0);mp.put(s,cnt+1);}       return mp;}// 调用public static void main(String[] args){//求两个HashMap的交集、差集、并集       String str1 = "queue";String str2 = "upper";// 统计每个元素的出现次数Map<String,Integer> mp1 = new HashMap<String,Integer>();Map<String,Integer> mp2 = new HashMap<String,Integer>();mp1 = Counter(str1);mp2 = Counter(str2);System.out.println("mp1"+mp1);System.out.println("mp2"+mp2);// 求交集Map<String,Integer> resultIntersection = new HashMap<String,Integer>();resultIntersection = Intersection(mp1, mp2);System.out.println("交集:"+resultIntersection);//求并集Map<String,Integer> resultUnion = new HashMap<String,Integer>();resultUnion = Union(mp1, mp2);System.out.println("并集:"+resultUnion);//求差集Map<String,Integer> resultDifference = new HashMap<String,Integer>();resultDifference = Difference(mp1, mp2);System.out.println("差集mp1-mp2:"+resultDifference);}
}

Java Map交集 并集 差集(可直接运行)相关推荐

  1. lambda 对象去重_采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集...

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...

  2. java实现交集并集差集

    java实现交集并集差集 ***`package 第一次模拟测试; import java.util.ArrayList; import java.util.HashSet; import java. ...

  3. 采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...

  4. java list 交集 并集 差集 去重复并集

    2019独角兽企业重金招聘Python工程师标准>>> //并集 list1.addAll(list2); //交集 list1.retainAll(list2); //差集 lis ...

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

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

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

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

  7. go自定义和使用set包处理列表 交集 并集 差集

    自定义交集 并集 差集 package mainimport "fmt"func main() {aList := []string{"1", "2& ...

  8. MySQL求交集 并集 差集

    MySQL求交集 并集 差集 交集 两个表之间相同的 并集 两个表之间的总和 ps: union 自带去重 差集 两个表直接的差值

  9. oracle表交集并集,oracle交集,并集,差集

    oracle交集,并集,差集 [sql] create table test1 ( name varchar(10), NN varchar(10) ); insert into test1 valu ...

最新文章

  1. linux环境变量查询设置及保存
  2. javascript时间格式format函数,js日期格式化函数
  3. ajax上传plupload的使用
  4. 开源软件 cadsurf 阅读笔记
  5. Linux下启动tomcat报java.lang.OutOfMemoryError: PermGen space
  6. Java多线程---线程通信(wait,notifyAll,生产者消费者经典范式,owner wait set,自定义显式锁BooleanLock)
  7. 九日登望仙台呈刘明府 [唐] 崔曙
  8. oracle设计案例,Oracle课程设计案例精编
  9. Intel SGX入门
  10. java毕业设计演唱会门票订售及管理系统Mybatis+系统+数据库+调试部署
  11. iphone进入安全模式及退出安全模式的方法
  12. 拼图软件那个好用?好用的拼图软件分享
  13. 科沃斯擦窗机器人向上走不动_ECOVACS 科沃斯 W830 解决高空擦玻璃的难处
  14. 多旋翼无人机仿真 rotors_simulator:roll pitch yawrate thrust 控制器
  15. django 连接oracle的坑和解决方法
  16. 大流量滤芯保安过滤器
  17. Python编辑excel里的文本框
  18. 2g限制 outlook_OutLook超出2G大小限制的 PST 和 OST 的解决方法-邮件备份法
  19. python权限设置
  20. 【JVM源码解析】模板解释器解释执行Java字节码指令(上)

热门文章

  1. graphical GUI
  2. SolidWorks二次开发官方教程-API Fundamentals学习分享
  3. 最受欢迎的ZIP工具
  4. Nyquist 尼奎斯特采样定理
  5. 计算机组成原理(1)课程概貌、地位、分割整合
  6. Content-Type简析
  7. 服务器为什么要封UDP
  8. [ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-5 通关详解 (附靶机搭建教程)
  9. 万物皆可Cassandra:HUAWEI Tag背后的神仙数据库
  10. 利用休息时间编写的关于新唐单片机较为简单的ADC+定时器+IO端口程序