Java判断两个ListMap值是否相等(包括数据长度、存储的值)超实用工具类(亲测)

2023-11-07

一、功能描述:比较两个list中存储的map数据,比较的list的数据类型需一致,就能比较出存储的数据是否一致。

二、实现步骤:1、比较两个list的长度大小

                         2、统计出每个list中存储的map值的个数及重复的,进行比较

                         3、具体比较值

三、废话不多说,直接上代码:

     private static final Integer INTEGER_ONE = 1;
	
	// 判断并返回结果 true和false
	public static boolean isEqualCollection(Collection a, Collection b) {
		if (a.size() != b.size()) { // size是最简单的相等条件
			return false;
		}
		Map mapa = getCardinalityMap(a);
		System.out.println(mapa);
		Map mapb = getCardinalityMap(b);
		System.out.println(mapb);

		// 转换map后,能去掉重复的,这时候size就是非重复项,也是先决条件
		if (mapa.size() != mapb.size()) {
			System.out.println("存储的map数据不一致!");
			return false;
		} else {
			System.out.println("转换map后,能去掉重复的,这时候size就是非重复项后,存储的map数据一致!");
		}
		Iterator it = mapa.keySet().iterator();
		while (it.hasNext()) {
			Object obj = it.next();
			// 查询同一个obj,首先两边都要有,而且还要校验重复个数,就是map.value
			if (getFreq(obj, mapa) != getFreq(obj, mapb)) {
				return false;
			}
		}
		return true;
	}

	/**
	 * 以obj为key,可以防止重复,如果重复就value++ 这样实际上记录了元素以及出现的次数
	 */
	public static Map getCardinalityMap(Collection coll) {
		Map count = new HashMap();
		for (Iterator it = coll.iterator(); it.hasNext();) {
			Object obj = it.next();
			Integer c = (Integer) count.get(obj);
			if (c == null)
				count.put(obj, INTEGER_ONE);
			else {
				count.put(obj, new Integer(c.intValue() + 1));
			}
		}
		return count;
	}

	private static final int getFreq(Object obj, Map freqMap) {
		Integer count = (Integer) freqMap.get(obj);
		if (count != null) {
			return count.intValue();
		}
		return 0;
	}

    
    // main方法测试类
	public static void main(String[] args) {
		Map<String, Object> m1 = new HashMap<String, Object>();
		m1.put("a", "abc");
		m1.put("b", "123");
		m1.put("c", "123");
		m1.put("d", "123");

		Map<String, Object> m2 = new HashMap<String, Object>();
		m2.put("c", "123");
		m2.put("a", "abc");
		m2.put("b", "123");
		m2.put("d", "123");

		Map<String, Object> m3 = new HashMap<String, Object>();
		m3.put("a", "abc");
		m3.put("b", "123");
		m3.put("c", "123");
		m3.put("d", "123");

		Map<String, Object> m4 = new HashMap<String, Object>();
		m4.put("b", "123");
		m4.put("a", "abc");
		m4.put("c", "123");
		m4.put("d", "123");

		List<Map<String, Object>> a = new ArrayList<>();
		a.add(m1);
		a.add(m3);
		
		List<Map<String, Object>> b = new ArrayList<>();
		b.add(m2);
		b.add(m4);

		boolean c = isEqualCollection(a, b);
		System.out.println(c);

	}

转载请注明出处:https://blog.csdn.net/qq_28245087/article/details/86652602

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java判断两个ListMap值是否相等(包括数据长度、存储的值)超实用工具类(亲测) 的相关文章

随机推荐

  • 计算机网络应用层协议分析总结

    1 应用层协议原理 1 1 网络应用程序体系结构 C S结构 有一个总是打开的主机称为服务器 它服务于来自许多其他称为客户机的主机请求 客户机主机既可能有时打开 也可能总是打开 C S结构之下 客户机之间不直接通信 服务器有固定的IP地址
  • 常用的专业医学分析和科研绘图工具合集

    专业的医学分析和科研绘图在医学研究 临床实践和教育培训中起到重要的作用 可以提高医学专业人员的工作效率和决策质量 同时也促进医学科学的发展和进步 详细的资源及不停更地址 科研常用资源合集 Fiji ImageJ Fiji自动包含了各种有用的
  • 权重确定方法之主成分分析法

    什么是权重呢 所谓权重 是指某指标在整体评价中的相对重要程度 权重越大则该指标的重要性越高 对整体的影响就越高 权重要满足两个条件 每个指标的权重在0 1之间 所有指标的权重和为1 权重的确定方法有很多 这里我们学习用主成分分析确定权重 一
  • HTML的爱心闪烁代码

    没有web编译器 就先用txt的记事本写好 将后缀txt格式改为html格式 代码1如下
  • 软件开发文档模板

    目录 1 范围 2 总体要求 2 1 总体功能要求 2 2 软件开发平台要求 2 3 软件项目的开发实施过程管理要求 2 3 1 软件项目实施过程总体要求 2 3 2 软件项目实施变更要求 2 3 3 软件项目实施里程碑控制 3 软件开发
  • 基于MapperScan注解的Mybatis动态代理加载机制

    1 如下图在代码开发中使用mybatis时 通过一个接口UserDao对应的方法selectUserNameById执行xml里配置的selectUserNameById查询sql语句 接口dao没有具体的实现方法 那真正执行时mybati
  • 字典排序什么意思_字典序排序

    查字典时 比如查单词 Love 我们是从第一个字母L 开始查找 在A Z开头中的单词中 不管是实际操作的二分查找还是别的方式查找 总能找到L打头的单词所在的位置范围 然后又在这个范围内开始查找O字母排第二的单词 之后又依次检索V字母 E字母
  • DVWA更改不了安全等级,一直卡在一个等级

    关于DVWA更改不了安全等级 一直卡在一个等级 今天在DVWA平台做实验 出现了问题 换不到想要的安全等级 自己动手找找问题 他是通过传参数来确定等级的 那就用burpsuite抓一下看看 当你把这个安全等级删了再发出去 会发现到了high
  • Python创建优化方法

    1 很多小伙伴在python中创建方法时 写的代码很冗余 并且也没有很多的异常格式 今天撰写一个简单的优化方法 2 例如首先我们定义一个方法 里边获取URL的信息 在返回状态值的时候 我们需要进行判断 下面我来讲解一下这个方法的实现过程 首
  • 华为OD机试 - We Are A Team(Java)

    题目描述 总共有 n 个人在机房 每个人有一个标号 1 lt 标号 lt n 他们分成了多个团队 需要你根据收到的 m 条消息判定指定的两个人是否在一个团队中 具体的 消息构成为 a b c 整数 a b 分别代表两个人的标号 整数 c 代
  • Java EE---Spring AOP

    本文是我在学习Java EE过程中记录学习的点点滴滴 仅仅为了学完之后巩固一下 日后忘记了也可以方便快速的复习 文章目录 前言 一 项目清单 二 全部代码 2 1 stuDao接口 2 2 StudentDaoImpl类 2 3 myAsp
  • 一、编写hello world

    1 开发环境 1 操作系统 Linux 2 编译 GCC编译 2 安装GCC 1 我们安装的Linux是Ubuntu 默认是不带GCC的 2 安装GCC命令 apt get install gcc 3 使用vim编写hello world
  • 用opencv3写的超详细注释的车牌检测

    include iostream include opencv2 opencv hpp include opencv2 highgui highgui hpp include opencv2 core core hpp include op
  • uniapp打包app,调用相机功能时在真机调试可以,打包成app之后不行

    在打包成app之后报如图所示错误 解决 在app模块配置勾选上相机这一项 如图 这是主要针对上面这个报错的 当然还有一下情况比较类似 就是相机功能在真机调试下可以 打包之后就不行了 我总结了如下几点 1 代码中的sourceType要配置为
  • 【满分】【华为OD机试真题2023 JS】不爱施肥的小布

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 不爱施肥的小布 知识点二分查找 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 某农场主管理了一大片果园 fields i 表示不同果林的面积 单位 m 2 现在
  • mybatis批量更新list对象

    最重要的一点 mybatis要想批量更新 首先我们数据库需要支持批量更新操作 需要在连接数据库时 添加配置 url jdbc mysql 192 168 6 11 3306 equipment im dev serverTimezone A
  • 内网渗透测试 MSF搭建socks代理

    环境搭建 最终效果为如此 web服务器可以ping通外网和内网两台服务器 外网打点 信息收集 发现端口 80 http 3306 mysql 敏感目录 phpMyadmin 数据库弱口令 root root 通过日志功能getshell 现
  • 在Unbuntu 18.04上docker安装MindSpore

    作者 张小白 文章来源 https bbs huaweicloud com blogs 241465 摘要 本文介绍了如何在ubuntu 18 04上使用docker安装python 3 7 5和mindspore 1 1 1 docker
  • RecyclerView设置Item的边距

    一 通过继承RecyclerView ItemDecoration RecyclerView有三种布局即 LinearLayoutManager 线性布局 StaggeredGridLayoutManager瀑布流布局 GridLayout
  • Java判断两个ListMap值是否相等(包括数据长度、存储的值)超实用工具类(亲测)

    一 功能描述 比较两个list中存储的map数据 比较的list的数据类型需一致 就能比较出存储的数据是否一致 二 实现步骤 1 比较两个list的长度大小 2 统计出每个list中存储的map值的个数及重复的 进行比较 3 具体比较值 三