public boolean equals(Object o) { //1.同一对象,对象相等 if (o == this) returntrue; //2.类型不是Map,对象不相等 if (!(o instanceof Map)) returnfalse; Map<?,?> m = (Map<?,?>) o; //3.size不等,对象不相等 if (m.size() != size()) returnfalse;
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(); //4.如果value为空,对应的对象value不为空或者根本没有这个key,对象不相等 if (value == null) { if (!(m.get(key)==null && m.containsKey(key))) returnfalse; } else { //如果value不为空,对应map相同key的value值是否相等,不等则对象不相等 if (!value.equals(m.get(key))) returnfalse; } } } catch (ClassCastException unused) { returnfalse; } catch (NullPointerException unused) { returnfalse; }