in src/main/java/org/apache/commons/beanutils2/WeakFastHashMap.java [517:563]
public boolean equals(final Object o) {
// Simple tests that require no synchronization
if (o == this) {
return true;
}
if (!(o instanceof Map)) {
return false;
}
final Map<?, ?> mo = (Map<?, ?>) o;
// Compare the two maps for equality
if (fast) {
if (mo.size() != map.size()) {
return false;
}
for (final Map.Entry<K, V> e : map.entrySet()) {
final K key = e.getKey();
final V value = e.getValue();
if (value == null) {
if (!(mo.get(key) == null && mo.containsKey(key))) {
return false;
}
} else if (!value.equals(mo.get(key))) {
return false;
}
}
return true;
}
synchronized (map) {
if (mo.size() != map.size()) {
return false;
}
for (final Map.Entry<K, V> e : map.entrySet()) {
final K key = e.getKey();
final V value = e.getValue();
if (value == null) {
if (!(mo.get(key) == null && mo.containsKey(key))) {
return false;
}
} else if (!value.equals(mo.get(key))) {
return false;
}
}
return true;
}
}