判断map是否包含另一个map:

map不同与list集合,list集合有直接判断集合是否包含其他集合或者元素的方法。

    1. boolean contains(Object o)

    如果list包含指定的元素,则返回true。

    1. boolean containsAll(Collection<?> c)

    如果list包含指定collection的所有元素,则返回true。

map虽然没有直接判断是否包含其他map的方法,但是map有根据key或者value是否存在与map中的方法。

    1. containsKey(Object key)

     如果此映射包含对于指定key的映射关系,则返回true。

    1. containsValue(Object value)

    如果此映射将一个或多个键映射到指定值,则返回true。

有了上面的两个方法,就可以采取其他转换的方式去判断了。思路如下:

  由于只能比较key和value,而要判断map是否包含另一个map,那就要同时比较key与value,方法可以是:将key和value改造成特定格式的字符串,作为key或者value,在进行比较key或者value,就可以达到同时比较key和value的效果了。

当然这个过程中还用到了map的遍历: map遍历有多种方式:

1、Map.Entry遍历

  1. for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
  2. System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
  3. }

  这种方式可以获取到key和value。

2、keySet遍历

  1. for (Integer key : map.keySet()) {
  2. System.out.println("key = " + key);
  3. }

  这种方式遍历遍历key

3、values遍历

  1. for (Integer value : map.values()) {
  2. System.out.println("key = " + value);
  3. }

  这种方式遍历value。

4、Iterator遍历

  1. Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
  2. while (it.hasNext()) {
  3. Map.Entry<Integer, Integer> entry = it.next();
  4. System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
  5. }

简单示例如下:

  1. public static void main(String[] args) {
  2. Map<String, String> map1 = new HashMap<>();
  3. Map<String, String> map2 = new HashMap<>();
  4. Map<String, String> mapA = new HashMap<>();
  5. map1.put("a", "b");
  6. map1.put("b", "d");
  7. map1.put("a", "c");
  8. map1.put("e", "r");
  9.  
  10. map2.put("a", "b");
  11. map2.put("a", "c");
  12.  
  13. for (Map.Entry<String, String> entry : map1.entrySet()) {
  14. String map1Key = entry.getKey();
  15. String map1Value = entry.getValue();
  16. String map1KeyVal = map1Key + ":" + map1Value;
  17. String map1ValKey = map1Value + ":" + map1Key;
  18. mapA.put(map1KeyVal, map1ValKey);
  19. }
  20.  
  21. // 判断map1是否包含map2
  22. for (Map.Entry<String, String> entry : map2.entrySet()) {
  23. String map2Key = entry.getKey();
  24. String map2Value = entry.getValue();
  25. String map2KeyVal = map2Key + ":" + map2Value;
  26. boolean keyExist = mapA.containsKey(map2KeyVal);
  27. boolean valExist = mapA.containsValue(map2KeyVal);
  28. if (keyExist == false){
  29. System.out.println("map1 不包含 map2");
  30. }
  31. }
  32. }

在查看Map.Entry的方法时发现entry有一个equal()方法,可以比较单个的map,但在使用的还是需要去做变通:

示例:

  1. for (Map.Entry<String, String> entry : map1.entrySet()) {
  2. for (Map.Entry<String, String> entry2 : map2.entrySet()){
  3. boolean result = entry.equals(entry2);
  4.      。。。
  5. }
  6. }

判断map是否包含另一个map的更多相关文章

  1. Jquery 选择器 详解 js 判断字符串是否包含另外一个字符串

    Jquery 选择器 详解   在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools ...

  2. java 将Map拷贝到另一个Map对象当中

      java 将Map拷贝到另一个Map对象当中 CreateTime--2018年6月4日09点46分 Author:Marydon 1.需求说明 将一个MapA对象中所有的键值对完全拷贝到另一个M ...

  3. js 判断字符串是否包含另外一个字符串

    示例代码: <script type="text/javascript"> var str = "测试一个字符串(ehtrzes)是否包含另外一个字符串&qu ...

  4. Java 将两个Map对象合并为一个Map对象

    实现方式是通过 putAll() 方法将多个 map 对象中的数据放到另外一个全新的 map 对象中,代码如下所示,展示了两个 map 对象的合并,如果是多个 map 合并也是用这种方式. publi ...

  5. 关于前端JS判断字符串是否包含另外一个字符串的方法总结

    RegExp 对象方法 test() var str = "abcd"; var reg = RegExp(/d/); console.log(reg.test(str)); // ...

  6. shell 判断字符串是否包含另一个字符串

    1.使用grep s1="abcdefg" s2="bcd" result=$(echo $s1 | grep "${s2}") if [[ ...

  7. PHP 判断字符串 是否 包含另一个字符串

    1.stristr 忽略大小写 $string = 'Hello World!'; if(stristr($string, 'earth') === FALSE) { echo '"eart ...

  8. capsule network——CNN仅仅考虑了“有没有”的问题,没有考虑feature map的结构关系。这个结构关系包括位置,角度等。Capsule layer的输出也跟feature map的max-pooling输出不同,capsule layer的输出是一个向量,这个向量包含了位置,大小,角度等信息,这是feature map仅能输出一个值所不具备的;训练比较慢

    capsule network--<Dynamic Routing Between Capsules> from:https://zhuanlan.zhihu.com/p/31491520 ...

  9. 将一个 JavaBean 对象转化为一个 Map

    package com.loan.modules.common.util; import java.beans.BeanInfo; import java.beans.IntrospectionExc ...

随机推荐

  1. echarts 柱状图+折线+文字倾斜及省略

    效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  2. 父子间的通信,以及ref

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. PHP转Go系列:map映射

    映射的定义 初识映射会很懵,因为在PHP中没有映射类型的定义.其实没那么复杂,任何复杂的类型在PHP中都可以用数组表示,映射也不例外. $array['name'] = '平也'; $array['s ...

  4. The Preliminary Contest for ICPC Asia Nanjing 2019

    传送门 A. The beautiful values of the palace 题意: 给出一个\(n*n\)的矩阵,并满足\(n\)为奇数,矩阵中的数从右上角开始往下,类似于蛇形填数那样来填充. ...

  5. springmvc 什么时候 set applicationContext 到 ServletConfig 的?

    springmvc 什么时候 set applicationContext 到 ServletConfig 的? FrameworkServlet --> initWebApplicationC ...

  6. Mybatis框架增删改查

    一.recourses中核心配置文件mybatis-config.xml 二. recourse中jdbc.properties 三.entity实体类 四.ISmbmsUserDao层 五.ISmb ...

  7. vscode相关设置

    一.如何设置vs每次点击文件打开新的窗口: 1.打开设置 2.搜索:"workbench.editor.enablePreview" 3.设置"workbench.edi ...

  8. 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 2

    23.1.3  接口的应用和优势 API是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无须访问源码,或理解内部工作机制的细节.接口应用的一些常见场景如下 ...

  9. C# windows服务,解决应用程序开机自启问题

    最近在东营做一个超市购物的项目,业务体量很小,是仅供内部员工使用的内网应用程序,其中涉及一个商品数据同步的winform应用程序,有一个问题就是服务器重启后,必须登录服务器操作系统,手动启动才行,于是 ...

  10. C++入门到理解阶段二基础篇(1)——简介与环境安装

    1.C++ 简介 C++ 是一种静态类型的.编译式的.通用的.大小写敏感的.不规则的编程语言,支持过程化编程.面向对象编程和泛型编程. C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点. ...