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

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

  • boolean contains(Object o) 

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

  • boolean containsAll(Collection<?> c) 

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

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

  • containsKey(Object key) 

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

  • containsValue(Object value) 

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

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

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

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

1、Map.Entry遍历

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

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

2、keySet遍历

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

  这种方式遍历遍历key

3、values遍历

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

  这种方式遍历value。

4、Iterator遍历

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

简单示例如下:

public static void main(String[] args) {
Map<String, String> map1 = new HashMap<>();
Map<String, String> map2 = new HashMap<>();
Map<String, String> mapA = new HashMap<>();
map1.put("a", "b");
map1.put("b", "d");
map1.put("a", "c");
map1.put("e", "r"); map2.put("a", "b");
map2.put("a", "c"); for (Map.Entry<String, String> entry : map1.entrySet()) {
String map1Key = entry.getKey();
String map1Value = entry.getValue();
String map1KeyVal = map1Key + ":" + map1Value;
String map1ValKey = map1Value + ":" + map1Key;
mapA.put(map1KeyVal, map1ValKey);
} // 判断map1是否包含map2
for (Map.Entry<String, String> entry : map2.entrySet()) {
String map2Key = entry.getKey();
String map2Value = entry.getValue();
String map2KeyVal = map2Key + ":" + map2Value;
boolean keyExist = mapA.containsKey(map2KeyVal);
boolean valExist = mapA.containsValue(map2KeyVal);
if (keyExist == false){
System.out.println("map1 不包含 map2");
}
}
}

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

示例:

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

判断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. js的try catch使用心得

      1 try catch的使用,永远应该放在你的控制范围之内,而不应该防范未知的错误.也就是说你很清楚知道这里是有可能”出错“的,而且你很清楚知道什么前提下会出错,你就是要故意利用报错信息来区分错误 ...

  2. Python 读取照片的信息:拍摄时间、拍摄设备、经纬度等,以及根据经纬度通过百度地图API获取位置

    通过第三方库exifread读取照片信息.exifread官网:https://pypi.org/project/ExifRead/ 一.安装exifreadpip install exifread ...

  3. 0day2安全——笔记1

    第一章 PE和内存之间的映射 节偏移 文件偏移地址(File Offset Address):数据在PE文件中的地址 装载地址(Image Base):PE装入内存的基地址 虚拟内存地址(Virtua ...

  4. day91_11_13Local与偏函数

    一.local 在线程的处理中,常常遇到这样的问题.当一系列线程遇到io操作的时候,就会执行其他线程,这时候就会出现数据冲突,发生数据方面的问题: from threading import Thre ...

  5. acWing 825. 排队购物

    题目描述苏西小朋友和她的妈妈正在超市里购物,看着收银处排着的长长的队伍,她就想如何能够提高整体的服务质量呢? 已知,现在有n个人正在排队等待结账,每个人结账所花的时间都可能是不同的,第 i 个人的结账 ...

  6. 【洛谷5363】[SDOI2019] 移动金币(动态规划)

    点此看题面 大致题意: 有\(n\)个格子,让你摆放\(m\)个金币.二人博弈,每次选择一个金币向左移任意格,无法移动者输.问有多少种方案使先手必胜. 阶梯\(Nim\) 阶梯\(Nim\)的基本模型 ...

  7. 【2019.10.7 CCF-CSP-2019模拟赛 T1】树上查询(tree)(思维)

    思维 这道题应该算是一道思维题吧. 首先你要想到,既然这是一棵无根树,就要明智地选择根--以第一个黑点为根(不要像我一样习惯性以\(1\)号点为根,结果直到心态爆炸都没做出来). 想到这一点,这题就很 ...

  8. Codeforces Round #597 (Div. 2) F. Daniel and Spring Cleaning 数位dp

    F. Daniel and Spring Cleaning While doing some spring cleaning, Daniel found an old calculator that ...

  9. 一个python问题引发的思考

    问题: pyqt5下开发的时候,遇到了一个这样的问题.Traceback (most recent call last):File “test.py”, line 3, in from PyQt5.Q ...

  10. Linux系统管理图文详解超详细精心整理

    前言:带你遨游于linux系统管理知识的海洋,沐浴春日里的阳光,循序渐进,看完之后收获满满. 本次讲解基于linux(centos6.5)虚拟机做的测试,centos7估计以后有时间再更新啊. lin ...