java中比较两个map是否相同

2023-11-14

结论

对于所有继承于AbstractMap的map类(基本上jdk中的map都继承了),直接使用Map.equals()即可

源码解析

AbstractMap重写了equals方法,保证对两个相同内容的map调用equals比较结果为真,源码如下

public boolean equals(Object o) {

//同一对象相等

if (o == this)

return true;

//不是Map的子类不相等

if (!(o instanceof Map))

return false;

Map,> m = (Map,>) o;

//元素数量不同不相等

if (m.size() != size())

return false;

//遍历

try {

for (Entry e : entrySet()) {

K key = e.getKey();

V value = e.getValue();

//空值特殊处理

if (value == null) {

if (!(m.get(key) == null && m.containsKey(key)))

return false;

} else {

//调用元素的equals比较

if (!value.equals(m.get(key)))

return false;

}

}

} catch (ClassCastException unused) {

return false;

} catch (NullPointerException unused) {

return false;

}

return true;

}

复制代码

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

java中比较两个map是否相同 的相关文章

随机推荐

  • VUE+vue-print-nb,vue打印我踩过的坑

    这几天写了一个需求 要求打印条形码 先来张要打印出来的效果图吧 效果图大概长这样子 图是我随便找的 二维码扫出来是啥我也不知道 哈哈 写这个需求的时候踩了太多的坑了 在此记录下辛酸史 vue print nb基本用法 这个插件用法很简单 安
  • 存储器管理(分页存储)例题解析(操作系统)

    逻辑地址 页号 页长 页内偏移量 将逻辑地址102B H 转换成十进制 11 160 2 161 1 163 4139 因为页长1KB 1024 所以 4139 1024 4 余数是43 那么也就是说 页号是 4 页内偏移量是 43 由页号
  • [深度学习]循环神经网络:RNN,LSTM,GRU,Attention机制,沿时间的截断反向传导算法

    RNN Recurrent Neural Network 循环神经网络 每个RNN都有一个循环核心单元 它把x作为输入 将其传入RNN RNN有一个内部隐藏态 internal hidden state 这个隐藏态会在RNN每次读取新的输入
  • ElasticSearch6.x 核心概念总结

    ElasticSearch6 x 与MySQL8 核心概念对比 ElasticSearch6 x MySQL8 x 索引 index 数据库 database 类型 type 表 table 文档 document 行 row 字段 fie
  • golang slice 是 struct 类型,作为参数传递时要传地址

    总结 slice 为结构体类型 go 传参都是值传递 跨函数传递 slice 时 要传变量的地址 不能直接传递变量值 因为除了 len 会变 遇到扩容时 还会新建底层数组 先看下 slice 的定义 type slice struct ar
  • Java 堆排序的应用--对类根据目标成员进行排序

    Java 堆排序的应用 对类根据目标成员进行排序 前言 堆排序方案 应用 快排方案 应用 代码记录 结语 前言 突然想对SQL语句搜索上来的数据重新排个序 也就是对类list排序 一时间网上搜了搜都说要覆写compareTo函数 觉得这么搞
  • 制作U盘安装CentOS 6.2

    见附件 CentOS6 2需自行下载
  • HCIP2------路由器、交换机的转发原理

    一 路由器 1 路由器产生的原因 对于普通用户来说 主机A与主机B通信需要通过路由器 从而构成简单的局域网 局域网内的计算机要和外面的计算机进行通信 要把请求提交给路由器的以太口 进而发展成为广域网 同时需要有一种方法来判断从源主机到达目的
  • Lattic Diamond软件安装不成功问题

    安装过程可以远程操作 但安装完成后不能通过远程来打开软件应用程序 一定要在本地电脑上打开使用 否则lisence中的MAC地址会不匹配
  • ScrollView默认位置不是最顶部

    场景描述 在scrollview中套用了一个recycleview 发现 recycleview上面的部分TextView不能被显示 直接显示的是recycleview的底部 分析原因 在Activity计算窗口的高度时 是在listvie
  • 在Excel中根据条件查找匹配多个值

    在Excel中根据条件查找匹配多个值 vlookup只能匹配第一个值 之前在深圳的时候就被问过这个问题 今天又遇到同事在问 索性记录在此 如下图 根据E列的值 在A列中查找对应的数据 输出匹配行上B列的值 依次填入到F G H 列 公式拆解
  • idea 配置maven常见问题

    1 在applicationContext dao xml中配置数据源时提示 cannot resolve property key 解决 在Facets中移除spring 重新添加一次 将xml引入 2 maven 下载的依赖库Depen
  • 腾讯云服务器标准型S5、S4、S3、S2区别及怎么选择?

    腾讯云标准型服务器包括S2 S3 S4实例 这些实例都是标准型服务器 那么S2 S3 S4 S5区别在哪里呢 在这一块选择的时候新手会有很多犹豫 看上去型号都差不多 配置里面很多参数也看不懂 到底怎么选呢 接下来带大家去看看详细情况 腾讯云
  • VS code 插件配置手册

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 VS code 插件配置手册 C C Tools插件 C C 支持安装库文件的配置GDB本地调试配置GDB远程调试配置Remote VSCode插件 远程编辑文件安装环境
  • VCPKG 包下载失败解决思路

    vcpkg经常会遇到资源无法访问 可能是域名解析出了问题 我们只需要将域名解析后的ip地址添加到hosts文件列表中可解决此问题 如 185 199 108 133 raw githubusercontent com 在此之前可先通过终端p
  • spring-boot-starter家族成员简介

    应用程序starters 以下应用程序starters是Spring Boot在org springframework boot组下提供的 springboot使用指南https docs spring io spring boot doc
  • Transforms的使用

    Transforms是常用的图像预处理方法 提高泛化能力 其实是一个py文件 其中包含了totensor 将数据类型转换成tensor类型 resize等工具 tensor数据类型 通过Transforms totensor去看两个问题 1
  • Linux 的 anaconda 虚拟环境下安装指定的 cuda、cudnn、pytorch

    感悟 首先 anaconda 的虚拟环境真香 开辟一个新的虚拟环境 很多环境 版本不兼容的问题都不复存在 尤其对复现别人代码的同学很有用 条件 只要安装的版本不超过自己机器的硬件条件 那么就可以安装 步骤 1 确定安装的 cuda 版本 在
  • springBoot+scheduling实现多任务动态定时任务

    使用spring自带的scheduling定时调度任务相当于轻量级的Quartz 但是不支持分布式 若要实现分布式定时任务就得使用Quartz了 第一步 在入口类中声明定时任务 import org springframework boot
  • java中比较两个map是否相同

    结论 对于所有继承于AbstractMap的map类 基本上jdk中的map都继承了 直接使用Map equals 即可 源码解析 AbstractMap重写了equals方法 保证对两个相同内容的map调用equals比较结果为真 源码如