Java 覆盖Hashmap的等于值<;字符串,字符串>;

Java 覆盖Hashmap的等于值<;字符串,字符串>;,java,overriding,equals,Java,Overriding,Equals,我有Hashmap,如何覆盖Hashmap的equals方法 谢谢。如果您愿意,您可以: HashMap<String, String> map = new HashMap<String, String>(){ @Override public boolean equals(Object o) { // TODO comparison here return super.equals(o); } }; map.equ

我有Hashmap,如何覆盖Hashmap的equals方法


谢谢。

如果您愿意,您可以:

HashMap<String, String> map = new HashMap<String, String>(){
    @Override
    public boolean equals(Object o) {
        // TODO comparison here
        return super.equals(o);
    }
};
map.equals(new HashMap<String, String>());
HashMap=newhashmap(){
@凌驾
公共布尔等于(对象o){
//这里的待办事项比较
返回super.equals(o);
}
};
equals(新的HashMap());
在HashMap中,已重写equals()方法。如果要重写对象类equals() 方法eclipse快捷键-->alt+shift+s+v


选择equals方法,单击ok。

您需要创建一个扩展Hashmap的类

public class NewHashMap<K,V> extends HashMap<K, V>

祝你好运

或者更好,在某个地方创建一个单独的方法来比较你想要的特定哈希映射。例如:

public class HashMapComparator {
    boolean static areMapsEqual(HashMap<String, String> aMap, HashMap<String, String> bMap) {
        ....
    }
}

尽管您应该知道,如果您想在搜索或排序这些hashmap的列表时使用
equals
方法,这是一个不正确的解决方案。我假设情况并非如此。

HashMap已经有了一个
equals()
方法。为您没有创建的类编写
equals()
方法不是您的责任。您为什么要这样做?如果你真的必须这样做,你需要扩展它并重写equals——但是为什么呢?你可以在子类化类的同时重写类的方法。但是为什么要更改HashMap的equals行为?@Seelenvirtuose我需要检查以下内容1)第一个映射中的所有键是否也存在于第二个映射中2)如果满足第1个,我还需要检查它们的键在两个映射中是否具有相同的值。注:这里hashmap@Pradheep:这将违反equals()契约,因此不是equals()方法的工作:[a=b]不能等于[a=b,c=d],即使这与您对“equal”的定义相匹配。如果两个贴图具有与相等值关联的相等键,则默认的equals方法返回trus。
public class HashMapComparator {
    boolean static areMapsEqual(HashMap<String, String> aMap, HashMap<String, String> bMap) {
        ....
    }
}
boolean mapsAreEqual = HashMapComparator.areMapsEqual(firstMap, secondMap);