判断map是否包含另一个map
判断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的更多相关文章
- Jquery 选择器 详解 js 判断字符串是否包含另外一个字符串
Jquery 选择器 详解 在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools ...
- java 将Map拷贝到另一个Map对象当中
java 将Map拷贝到另一个Map对象当中 CreateTime--2018年6月4日09点46分 Author:Marydon 1.需求说明 将一个MapA对象中所有的键值对完全拷贝到另一个M ...
- js 判断字符串是否包含另外一个字符串
示例代码: <script type="text/javascript"> var str = "测试一个字符串(ehtrzes)是否包含另外一个字符串&qu ...
- Java 将两个Map对象合并为一个Map对象
实现方式是通过 putAll() 方法将多个 map 对象中的数据放到另外一个全新的 map 对象中,代码如下所示,展示了两个 map 对象的合并,如果是多个 map 合并也是用这种方式. publi ...
- 关于前端JS判断字符串是否包含另外一个字符串的方法总结
RegExp 对象方法 test() var str = "abcd"; var reg = RegExp(/d/); console.log(reg.test(str)); // ...
- shell 判断字符串是否包含另一个字符串
1.使用grep s1="abcdefg" s2="bcd" result=$(echo $s1 | grep "${s2}") if [[ ...
- PHP 判断字符串 是否 包含另一个字符串
1.stristr 忽略大小写 $string = 'Hello World!'; if(stristr($string, 'earth') === FALSE) { echo '"eart ...
- 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 ...
- 将一个 JavaBean 对象转化为一个 Map
package com.loan.modules.common.util; import java.beans.BeanInfo; import java.beans.IntrospectionExc ...
随机推荐
- C#控制内插字符串的格式
C#6.0推出了内插字符串 结果展示: 内插表达式字段宽度和对齐方式: 结果展示:(+/-代表右对齐.左对齐,数字表示显示宽度)
- 如何在父级下访问v-slot的值——vuejs
关于作用域插槽v-slot的用法可以先看看文档 https://cn.vuejs.org/v2/guide/components-slots.html#%E4%BD%9C%E7%94%A8%E5%9F ...
- 当您解开后您从 Internet 上下载的压缩的文件时,文件的修改日期更改为您提取它的日期
用鼠标右键单击该压缩的文件,然后单击属性. 单击常规选项卡,请单击取消阻止,然后单击确定. 从压缩文件中提取文件.
- How to recover a skipped tablespace after an incomplete recovery? (Doc ID 1561645.1)
How to recover a skipped tablespace after an incomplete recovery? (Doc ID 1561645.1) APPLIES TO: Ora ...
- Day10 - Python基础10 socketserver 实现并发
本节内容: 1.实例tcp的并发 2.看源代码继承关系 3.详解:ThreadingTCPServer的过程 4.tcp和udp的request 不同 5.基于udp的并发实现 1.实例tcp并发 s ...
- 201871010131-张兴盼《面向对象程序设计(java)》第一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://edu.cnblogs.com/campus/xbsf/ ...
- HashMap默认加载因子为什么选择0.75?(阿里)
Hashtable 初始容量是11 ,扩容 方式为2N+1; HashMap 初始容量是16,扩容方式为2N; 阿里的人突然问我为啥扩容因子是0.75,回来总结了一下: 提高空间利用率和 减少查询成本 ...
- Go package: strings
Go strings Go 的 strings 包中包含许多处理字符串的函数 官方文档:https://golang.org/pkg/strings/ 前缀.后缀 判断字符串前缀.后缀 // 判断字符 ...
- shell基础概念, if+命令, shell中引用python, shell脚本的几种执行方式
说明: 虚拟机中shell_test目录用来练习shell, 其中有个test.log文件用来存放日志 #!/usr/bin/bash # shell文件开头, 用来指定该文件使用哪个解释器 ...
- Java内存中的常量池
1,java内存模型简介 <深入理解java虚拟机>里将java内存分为如下五个模块: 堆-堆是所有线程共享的,主要用来存储对象. 其中,堆可分为:新生代和老年代两块区域.使用NewRat ...