我有一个问题,其中我重写了equals方法并每次都返回false。
如果我将同一个对象两次放入hashmap中,则根据equals实现,它将返回false并且存在具有相同对象的重复条目,但是它仅覆盖现有对象。那么在与equals比较之前,它还会比较地址引用吗?

import java.util.HashMap;
import java.util.Map;

public class MapOverrideequals {

    public MapOverrideequals(int anshu) {
        this.anshu = anshu;
    }

    int anshu;

    @Override
    public boolean equals(Object o) {

        return false;

    }

    public static void main(String[] args) {

        Map<MapOverrideequals, String> m = new HashMap<MapOverrideequals, String>();

        MapOverrideequals mm = new MapOverrideequals(1);
        MapOverrideequals mm1 = new MapOverrideequals(1);

        m.put(mm, "ji");
        m.put(mm, "ki");
        //m.put(mm1, "ansh");

        for (Map.Entry<MapOverrideequals, String> m1 : m.entrySet()) {
            System.out.println(m1.getKey().anshu + "  " + m1.getValue());
        }

    }

}


产量:1 ki

最佳答案

if (e.hash == hash && ((k = e.key) == key || key.equals(k)))


它检查哈希和键引用是否相等。

09-16 12:17