比较两个Map是否相同

结论:对于所有继承于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<K, V> 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;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,256评论 18 399
  • 本系列出于AWeiLoveAndroid的分享,在此感谢,再结合自身经验查漏补缺,完善答案。以成系统。 Java基...
    济公大将阅读 5,408评论 1 6
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,943评论 0 62
  • 不是每场喧哗 我们都要参与 有些热闹 我们可以刻意错过 被尘埃与酒精麻醉的肉体 仿佛丢失了灵魂 也许出窍上了云霄 ...
    龙青阅读 1,364评论 1 4
  • 这一日兰芝在东窗下织布,想起前日仲卿书信所书:“母亲犹自盛怒,接卿归家,恐需时日”。抚着织机上的绸缎,兰芝轻叹,经...
    梅晓云阅读 3,418评论 0 0

友情链接更多精彩内容