HashMap的键值比较

  • 时间:2020-04-24 21:09 作者:松_1996 来源: 阅读:717
  • 扫一扫,手机访问
摘要:今天遇到了比较两个map中的值能否一致的问题,具体是前台传一个json字符串,我将其转换成map,之后与数据库中的map进行比对。脑中的第一反应,取entry进行遍历,马上否决,太麻烦了。而后想法是先判断map1的keySet能否containsAll()map2的keySet,不满足的话就不用去遍

今天遇到了比较两个map中的值能否一致的问题,具体是前台传一个json字符串,我将其转换成map,之后与数据库中的map进行比对。


  • 脑中的第一反应,取entry进行遍历,马上否决,太麻烦了。而后想法是先判断map1的keySet能否containsAll()map2的keySet,不满足的话就不用去遍历了,当然也否决掉了。
  • 之后是尝试equals方法,结果竟然成功了,效果如图:
     public static void main(String[] args) {        Map<Integer,Integer> map1 = new HashMap<>();        map1.put(1,3);        map1.put(2,3);        map1.put(3,4);        Map<Integer,Integer> map2 = new HashMap<>();        map2.put(1,3);        map2.put(3,4);        map2.put(2,3);        System.out.println(map1.equals(map2));    }
结果.png

看了一下jdk源码,恍然大悟

  public boolean equals(Object o) {    if (o == this)        return true;    if (!(o instanceof Map))        return false;    Map<?,?> m = (Map<?,?>) o;    if (m.size() != size())        return false;    try {        Iterator<Entry<K,V>> i = entrySet().iterator();        while (i.hasNext()) {            Entry<K,V> e = i.next();            K key = e.getKey();            V value = e.getValue();            if (value == null) {                if (!(m.get(key)==null && m.containsKey(key)))                    return false;            } else {                if (!value.equals(m.get(key)))                    return false;            }        }    } catch (ClassCastException unused) {        return false;    } catch (NullPointerException unused) {        return false;    }    return true;}

总结

  • 比较两个hashmap的值能否一致的话,直接使用equals方法就可。
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
【系统环境|】ZORRO佐罗软件安装教程及一键新机使用方法详细简介(2023-02-10 21:56)
【系统环境|】阿里云 centos 云盘扩容命令(2023-01-10 16:35)
【系统环境|】补单系统搭建补单源码搭建(2022-05-18 11:35)
【系统环境|服务器应用】高端显卡再度登上热搜,竟然是因为“断崖式”的降价(2022-04-12 19:47)
手机二维码手机访问领取大礼包
返回顶部