美文网首页Java 杂谈程序员
比较两个Map是否相同

比较两个Map是否相同

作者: alonwang | 来源:发表于2018-09-17 12:35 被阅读15次

结论:对于所有继承于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;
    }

相关文章

  • 比较两个Map是否相同

    结论:对于所有继承于AbstractMap的map类(基本上jdk中的map都继承了),直接使用Map.equal...

  • JavaScript比较两个数组的内容是否相同

    比较两个数组内容是否相同 比较两个Object对象元素是否相同

  • 14.同一运算符

    is/is not 比较两个变量引用对象是否相同,即id/内存地址是否相同 == 比较两个变量引用对象的值是否相同...

  • ===和==

    ==只比较内容是否相同;===还比较地址是否相同; //在swift中采用”==“对两个变量进行比较时,只要内容相...

  • containsKey和containsValue区别

    Java中containskey用来比较在一个map中是否存在相同的key,containsValue则是相反用于...

  • 1347. Minimum Number of Steps to

    思路:step1:用两个map分别存储两个串字符重复的个数;step2:比较两个key相同的值的差异,如果map_...

  • 比较两个fasta文件是否相同

    前言 最近碰到一个需求,比较两个fasta文件的所有序列是否一样,但是其名字无所谓是否相同,于是想了一个比较简单的...

  • java比较两个文件是否相同

    第一种 使用MD5加密,比较加密结果 由于MD5加密的特性,如果文件不同的话MD5只必定不同。ps:使用的org....

  • Kotlin之集合

    list Set Map Q1:键值相同的两个map相等么 看看Java的比较结果为 Java的结果是我们熟悉的,...

  • Python 基础 | 深入理解is和==的区别

    is和==的区别 is是比较两个对象在内存中地址是否相同 ==是比较两个对象的值是否相同,它调用的是对象的eq方法...

网友评论

    本文标题:比较两个Map是否相同

    本文链接:https://www.haomeiwen.com/subject/hiaknftx.html