程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> hashmap-兩個HashMap可以用equal方法比較是否相等嗎?

hashmap-兩個HashMap可以用equal方法比較是否相等嗎?

編輯:編程解疑
兩個HashMap可以用equal方法比較是否相等嗎?

試了一下是可以的但是看源碼又不太明白

        HashMap<String,String>n1=new HashMap<String,String>(){{put("2","s");}};
        HashMap<String,String>n2=new HashMap<String,String>(){{put("2","s");}};
        System.out.println(n1.equals(n2));

最佳回答:


頭兩行數據是jdk1.7的新功能,看了下HashMap的equals方法:

     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;
    }

官方解釋是這樣的:
1 檢查兩個對象是否是同一個對象引用,如果是,則顯然相等;
2 檢查比較對象是否是Map 類型,且與當前Map對象有相同的size個數
3 迭代當前對象,並且一一比較當前對象的每個key是否都在被比較對象中,並且值也相等。
其實很好理解,兩個Map相等,則必然兩個Map有相同的size,相同的keySet,並且每個key對應的value也相等。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved