java - 重写 Java 中的 HashMap equals 方法

标签 java hashmap equals

我注意到在 HashMap 的源代码中它把 equals 方法列为 final。为什么当我覆盖它时我没有收到编译错误?

public class Test extends HashMap<Object, Object> {

    @Override
    public boolean equals(Object o) {
        return false;
    }
}

Java HashMap equals 方法:

public final boolean equals(Object o) {
    if (!(o instanceof Map.Entry))
        return false;
    Map.Entry e = (Map.Entry)o;
    Object k1 = getKey();
    Object k2 = e.getKey();
    if (k1 == k2 || (k1 != null && k1.equals(k2))) {
        Object v1 = getValue();
        Object v2 = e.getValue();
        if (v1 == v2 || (v1 != null && v1.equals(v2)))
            return true;
    }
    return false;
}

最佳答案

那是 HashMap.Entry 的 equals 方法,而不是 HashMap 本身 - 看看它是如何尝试使用传递给它的引用作为 Map.Entry

关于java - 重写 Java 中的 HashMap equals 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612374/

相关文章:

javascript - 使用单个循环仅添加数组的不同元素

java - 按值集的大小对 HashMap 进行排序

java - HashSet 添加了两个对象,它们为 equals() 返回 true 并且在 Java 中具有相同的哈希码

variables - 将两个 "Double"变量与 -eq/-ne 进行比较不会验证数字是否大于 2 位

java - Android 应用内结算 - 部分卡不被接受

java - 在 Spring MessageSource 中使用文件夹模式

java - 基于 Jackson 中另一个字段值的条件字段要求?

java - HashMap<> 错误。类型开始非法

java - 在 Java 中使用 Inheritance Equality 有什么问题?

java - 如何将字符串值转换为 LatLng() 对象?