比較兩個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; }