需要理解覆蓋Java中的hashCode和equals之后的map.get()方法

我已經覆蓋了下面的hashCodeequals方法,我想了解Map get方法的實現。

public class Student{
    String name;

    Student(String s){
        this.name = s;
    }

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

    @Override
    public int hashCode() {
        return 111;
    }

    public static void main(String[] args) {
        Map<Student,String> map=new HashMap<>();
        Student ob1=new Student("A");
        Student ob2=new Student("B");
        map.put(ob1,"A");
        map.put(ob2,"B");
        System.out.println(map.get(ob1));
    }
}

我試著運行map.get(),但卻得到了null的結果,因為equals()方法總是返回false,所以永遠找不到鍵,但在這種情況下,我得到的結果是A

? 最佳回答:

在使用equals之前,HashMapget檢查是否與==相等。

因此,您使用的對象與用作鍵的對象相同(而不是具有相同內容但引用不同的對象),這一事實使get起作用。

如果你試著這樣做

public static void main(String[] args) {
    Map<Student,String> map=new HashMap<>();
    Student ob1=new Student("A");
    Student ob2=new Student("B");
    Student keyTest = new Student("A");
    map.put(ob1,"A");
    map.put(ob2,"B");
    System.out.println(map.get(keyTest)); //different key here
}

它打印null

主站蜘蛛池模板: 国产中文字幕一区| 日韩精品成人一区二区三区| 国语对白一区二区三区| 人成精品视频三区二区一区| 亚洲一区中文字幕在线电影网| 福利片免费一区二区三区| 一区二区亚洲精品精华液| 91精品一区二区三区久久久久 | 久久精品一区二区三区日韩| 亚洲国产精品第一区二区三区| 无码aⅴ精品一区二区三区| 波多野结衣一区二区三区| 毛片一区二区三区| 久久精品国产第一区二区三区| 一区二区免费视频| 久久青青草原一区二区| 一区二区三区视频在线播放| 精品国产亚洲一区二区三区在线观看| 久久伊人精品一区二区三区| 久久久精品人妻一区二区三区| 中文字幕人妻丝袜乱一区三区 | 亚洲福利视频一区二区| 国产第一区二区三区在线观看 | 国产自产在线视频一区| 国产亚洲一区二区三区在线不卡 | 高清一区二区三区视频| 一区二区三区影院| 高清一区二区三区| 国产美女口爆吞精一区二区| 国产精品区一区二区三在线播放| 精品国产日韩亚洲一区| 丰满爆乳一区二区三区| 亚洲sm另类一区二区三区| 亚洲高清毛片一区二区| 国产精品综合一区二区三区| 国产人妖视频一区在线观看| 美女福利视频一区二区| 亚洲综合无码AV一区二区| 一区二区在线电影| 另类ts人妖一区二区三区| 一区二区三区国模大胆|