判断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 ...
随机推荐
- .netcore控制台->定时任务Quartz
之前做数据同步时,用过timer.window服务,现在不用那么费事了,可以使用Quartz,并且配置灵活,使用cron表达式配置XML就可以.我用的是3.0.7版本支持.netcore. 首先创建一 ...
- JS基础语法---JSON格式的数据
1. 对象: 有属性和方法,特指的某个事物 对象: 一组无序属性的集合的键值对,属性的值可以是任意的类型 2.JSON格式的数据:一般都是成对的,是键值对, json也是 ...
- ActiveMQ持久化到MySQL以及使用SSL协议通讯
最近公司事情稍微少了点,研究下怎么优化几个系统的交互,因为我们目前使用的是长链接的同步接口,就考虑用下MQ来处理下.由于公司对安全有要求且和CA业务有关,则使用了SSL协议.此文使用的是Activem ...
- MySQL中if的写法
关键词:IF --if 判断,如果 device_num 的值为1,则赋值为100,反之为200 SELECT district, shop_name, IF ( device_num , , ) A ...
- SQL Server清理数据库日志的脚本-干货
USE [master]GOALTER DATABASE AAAAAA SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE AAAAAA SET RECO ...
- Python—图形界面开发
https://blog.csdn.net/kun_dl/category_7418837.html https://www.runoob.com/python/python-gui-tkinter. ...
- USB HOST与 USB OTG的区别及工作原理
在SmartQ 7上面,同时存在USB HOST与 USB OTG两个接口,我想问一下,这两个接口有什么区别么?我怎么认为HOST属于是多余呢? 麻烦高手解答,感激不尽!!! 转自USB HOST与 ...
- Linux 内核虚拟地址到物理地址转换讨论【转】
转自:https://blog.csdn.net/sunlei0625/article/details/59476987 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请 ...
- golang中的pflag示例
现在晚上在家啃kubeadm的源码, 在啃源码前,pflag,viper,cobra这三件套好像是必须的, 那就先弄懂一下这三个套件的套路吧. 第一个,pflag. https://www.cnblo ...
- Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul)
Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul) 1.Eureka Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是 ...